- 浏览: 365749 次
- 性别:
- 来自: 帝都
文章分类
最新评论
-
born19930314:
你好,请问还在吗?我的targetObject中由于含有无法序 ...
Quartz集群配置(100%成功) -
stone_yw:
想问一下,如果quartz只有一个任务,但是这个任务的执行时间 ...
Quartz集群配置(100%成功) -
yandype:
mzxueyun 写道 ERROR c.t.k.m.biz.M ...
Quartz集群配置(100%成功) -
x123456789a:
...
Quartz集群配置(100%成功) -
knight_black_bob:
startjava.io.IOException: Conne ...
TFTP的文件管理
package com.ksoaptest.util; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; /** * webservice处理类 * @author raymon * */ public class WebServiceUtil { // 定义Web Service的命名空间 static final String SERVICE_NAMESPACE = "http://192.168.20.159:8080/services/TestService"; // 定义Web Service提供服务的URL static final String SERVICE_URL = "http://192.168.20.159:8080/services/TestService"; /** * 发送webservice请求,并返回特定对象链表 * @param method 方法名 * @param paramNames 参数列表 * @param paramValues 参数值列表 * @param responseClass 返回类 * @return */ public static List<Object> callService(String method, String [] paramNames, String [] paramValues, Class responseClass, boolean isArray){ // 创建HttpTransportSE传输对象 HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL); httpTranstation.debug = true; // 使用SOAP1.1协议创建Envelop对象 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // 实例化SoapObject对象 SoapObject soapObject = new SoapObject(SERVICE_NAMESPACE, method); // 设置webservice方法参数值 for (int i = 0; i < paramNames.length; i++) { soapObject.addProperty(paramNames[i], paramValues[i]); } envelope.bodyOut = soapObject; try { // 调用Web Service httpTranstation.call(null, envelope); if (envelope.getResponse() != null) { // 获取服务器响应返回的SOAP消息 SoapObject bodyIn = (SoapObject) envelope.bodyIn; SoapObject detail = (SoapObject) bodyIn.getProperty(method + "Return"); return parseResponse(detail, responseClass, method, isArray); } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 处理webservice回复,并返回对象列表 * @param result * @param classes * @param method * @return List<Object> * @throws InstantiationException * @throws IllegalAccessException */ private static List<Object> parseResponse(SoapObject result, Class classes,String method, boolean isArray) throws InstantiationException, IllegalAccessException { List<Object> results = new ArrayList<Object>(); if (isArray) { for (int i = 0; i < result.getPropertyCount(); i++) { Object instance = classes.newInstance(); Field[] fields = classes.getDeclaredFields(); for (int j = 0; j < fields.length; j++) { fields[j].setAccessible(true); String value = ((SoapObject) result.getProperty(i)).getProperty(fields[j].getName()).toString(); setPropValue(instance, fields[j].getName(), value); } results.add(instance); } } else { Object instance = classes.newInstance(); Field[] fields = classes.getDeclaredFields(); for (int j = 0; j < fields.length; j++) { fields[j].setAccessible(true); String value = result.getProperty(fields[j].getName()).toString(); setPropValue(instance, fields[j].getName(), value); } results.add(instance); } return results; } /** * 反射设置对象的特定属性的值 * @param targetObj * @param propName * @param propValue */ public static void setPropValue(Object targetObj, String propName, Object propValue) { Class targetClass = targetObj.getClass(); try { Class targetC = Class.forName(targetClass.getName()); Field field = targetC.getDeclaredField(propName); field.setAccessible(true); if (field.getType().equals(Integer.class)) { field.set(targetObj, new Integer(Integer.valueOf(propValue.toString()))); } if (field.getType().equals(int.class)) { field.setInt(targetObj, Integer.valueOf(propValue.toString())); } if (field.getType().equals(String.class)) { field.set(targetObj, propValue.toString()); } if (field.getType().equals(double.class)) { field.setDouble(targetObj, Double.valueOf(propValue.toString())); } if (field.getType().equals(Double.class)) { field.set(targetObj, new Double(Double.valueOf(propValue.toString()))); } if (field.getType().equals(float.class)) { field.setFloat(targetObj, Float.valueOf(propValue.toString())); } if (field.getType().equals(Float.class)) { field.set(targetObj, new Float(Float.valueOf(propValue.toString()))); } if (field.getType().equals(Long.class)) { field.set(targetObj, new Long(Long.valueOf(propValue.toString()))); } if (field.getType().equals(long.class)) { field.setFloat(targetObj, Long.valueOf(propValue.toString())); } if (field.getType().equals(short.class)) { field.setShort(targetObj, Short.valueOf(propValue.toString())); } if (field.getType().equals(Short.class)) { field.set(targetObj, new Short(Short.valueOf(propValue.toString()))); } if (field.getType().equals(java.util.Date.class)) { field.set(targetObj, new Date(Date.parse(propValue.toString()))); } } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (NumberFormatException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { } } } //转载请注明出处:http://forhope.iteye.com/blog/1461407
评论
2 楼
essencer
2014-11-15
line 57:
SoapObject detail = (SoapObject) bodyIn.getProperty(method + "Return");
======================
能强转成SoapObject吗?
SoapObject detail = (SoapObject) bodyIn.getProperty(method + "Return");
======================
能强转成SoapObject吗?
1 楼
essencer
2014-11-15
写得很好!
顺便问一下博主,webservice能否直接返回json字符串,然后可以直接用google提供的Gson工具将json String 转换为实体类对象呢?
顺便问一下博主,webservice能否直接返回json字符串,然后可以直接用google提供的Gson工具将json String 转换为实体类对象呢?
发表评论
-
安卓CMD
2012-06-02 18:02 1206引用Android系统中的“CMD”,用命令行管理你的手机。 ... -
Android的静态注册广播问题
2012-05-29 15:26 4158引用 2. Static registering The ad ... -
Android ListView 显示Drawable对象
2012-05-17 14:37 1054http://www.cnblogs.com/thu539/a ... -
Android 开启WIFI 广播接收
2012-05-16 09:21 2060WifiManager wifiManager = (Wi ... -
Android Activity Task
2012-05-11 11:12 947引用A task is a collection of act ... -
Android Binder机制,虚拟机
2012-05-08 10:29 1464http://blog.csdn.net/luoshengya ... -
Android流量统计
2012-05-03 11:06 1539static long getMobileRxBytes ... -
Andriod WIFI模块
2012-03-30 09:53 768http://blog.163.com/wxiongn@126 ... -
Android Service相关
2012-03-26 14:22 866http://developer.android.com/re ... -
Android应用程序设计策略
2012-03-23 16:28 1135一个成功的Android应用程序往往提供一个突出的用户体验。当 ... -
sqlite工具类
2012-03-22 15:00 6125package com.asc.db; import ... -
ProgressBar教程
2012-03-21 11:39 923http://blog.csdn.net/Android_Tu ... -
Android webservice
2012-02-21 09:24 0http://blog.csdn.net/kangkangz4 ... -
sina 微博异步调用API
2011-12-30 09:00 1583AsyncWeiboRunner public clas ... -
Android 反编译
2011-12-14 17:39 845http://blog.csdn.net/sunboy_205 ... -
Android 权限相关问题
2011-12-13 19:59 2929ServiceMananger管理Service需要Syste ... -
Binding with unknown activity
2011-12-08 11:45 1255在TabActivity中bindservice时报错: ... -
Android Handler线程间通信机制分析
2011-12-06 19:50 2167Looper: 循环处理消息队列 //用法: cl ... -
Android相关工具地址
2011-12-02 21:40 806SDK: http://developer.android. ... -
显式,隐式的startActivity(intent)
2011-11-28 12:52 1418显式: new Intent(context,acti ...
相关推荐
本文将详细介绍如何在Android应用中使用KSOAP2来调用WebService。 首先,为了在Android项目中使用KSOAP2,你需要下载并添加对应的jar文件。你可以从Google Code仓库...
1. **创建Web服务**:编写Java类,实现你的业务逻辑,然后使用Axis的`wsdl2java`工具将WSDL(Web服务描述语言)文件转换为Java源代码。WSDL文件定义了服务接口、消息格式等。 2. **部署Web服务**:将生成的Java类...
在这个场景下,`ksoap2`库是一个常用的工具,它允许我们与Web服务进行交互,包括那些基于`ASP.NET`构建的Web服务。本篇将详细介绍如何使用`ksoap2`在Android端向一个使用Base64编码的ASP.NET Web Service上传图片。 ...
在本场景中,我们将探讨如何使用Ksoap2库来连接WebService实现图片上传功能。Ksoap2是一个轻量级的库,它使得Android应用能够与SOAP Web服务进行通信。 首先,我们来了解一下开发环境。在这个例子中,使用的是...
在这个项目中,ksoap2是实现天气查询的关键工具。 4. **项目结构**:通常,一个Android项目包含多个组件,如Activity(用户界面)、Service(后台服务)、BroadcastReceiver(广播接收器)等。此项目可能包含一个或...
2. **创建网络访问工具类** 在Android应用中,通常会封装一个工具类来处理网络请求。以下是一个简单的`WebServiceUtil`类的示例,包含了调用WebService的基本逻辑: ```java import org.ksoap2.SoapEnvelope; ...
总结,ksoap2.jar是Android开发者与Web Service交互的重要工具,通过它,我们可以轻松地调用远程Web Service方法,实现跨平台的数据交换。了解并掌握ksoap2的使用方法,对于开发涉及Web Service通信的Android应用来...
本示例将详细介绍如何使用Axis和KSOAP2这两个库在Java环境中调用WebService。 首先,让我们理解一下标题中的两个关键组件: 1. **Axis**:Apache Axis是Apache软件基金会开发的一个开源项目,它提供了一个强大的...
kSOAP2是一个轻量级的开源库,专为在移动设备上实现SOAP(Simple Object Access Protocol)服务调用而设计。在Android开发中,kSOAP2是常用的与Web服务交互的工具,它允许应用程序通过HTTP协议发送和接收SOAP消息。...
总之,kSOAP2 3.2.0是一个强大的工具,它使Android开发者能够轻松地与SOAP Web服务进行交互,实现了移动应用与服务器端的强大集成。通过熟练掌握kSOAP2的使用,开发者可以创建出能够利用Web服务功能的丰富Android...
在提供的文件`wsserver2`和`cxf_webservice_android`中,很可能是服务器端的配置和Android客户端的示例代码,具体实现细节需参考这些文件内容。总的来说,实现Android客户端与使用Apache CXF和WSS4J的Web服务的认证...
这个压缩包文件“Android应用源码WebService+ksoap2天气查询项目.zip”包含了使用Android平台进行Web服务调用,特别是天气查询的应用程序源代码。这里主要涉及的技术是Android开发和使用kSOAP2库来访问Web Service。...
6. **工具类封装**:项目中可能包含一个工具类,用于封装与Web服务交互的相关逻辑,以提高代码的可读性和可维护性。这种封装包括构造SOAP请求,发送请求,处理响应等。 7. **错误处理**:在实际应用中,需要考虑...
4. 在Eclipse中,右键项目 -> `New -> Other -> Web Service -> Axis2 Web Service`,按照向导设置服务名称、接口类和服务实现类。 5. 将项目部署到Tomcat服务器上,webService服务即部署成功。 #### android调用...
KSOAP2框架为Android开发者提供了一个简单且强大的工具来实现与服务器端的数据交换。通过具体代码示例的分析,我们可以更深入地理解WebService的工作原理及其实现过程。在实际开发中,合理利用WebService可以显著...
【WebService+ksoap2天气查询】是一个典型的Android应用开发案例,主要展示了如何在Android平台上通过ksoap2库调用远程的WebService服务,实现天气查询功能。这个案例对于Android开发者,特别是初学者来说,是非常有...
在Android中,我们可以使用KSOAP2库来实现SOAP请求。KSOAP2是一个轻量级且易于使用的库,专门用于Android平台,支持SOAP 1.1和1.2协议。 以下是使用KSOAP2访问Web Service的基本步骤: 1. 引入KSOAP2库:在项目中...