下方转自:
http://harvey8819.blog.163.com/blog/static/1623651812010111635278/
------------------------------------------------------------------------------------------------------
android 利用ksoap2方式连接webservice(2010-04-16 16:36:25)转载标签:androidksoap2webserviceit 分类:Android
利用J2SE的ksoap2标准,我也来做一个山寨版本的android连接webservice。因为soap封装的关系,android application在接收到数据后不能够正确的按照J2SE的标准来获取。
在运用之前,我们先要引导两个jar进入工程的buildpath
这两个jar包都可以在网上查到下载,引导完后再做一项准备工作。弄清楚已发布的webservice的地址,以及封装的方式。比如:
webservice接口:http://192.168.0.2:8080/axis2/services/Manager?wsdl (顺便说明一下,在android当中,不能写localhost,必须写清楚PC机当前的网络IP)
webservice封装:http://ws.apache.org/axis2
都了解了过后,说明已经做好准备了。
下面就介绍一下android如何获取webservice封装数据。。
引入ksoap2中以封装好的类
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
在类中定义webservice的接口地址以及解析方式并且定义要调用的webservice中的函数
private static final String URL = "http://192.168.0.2:8080/axis2/services/Manager?wsdl";
private static final String NAMESPACE = "http://ws.apache.org/axis2";
private static final String METHOD_NAME = "GetMyFriends";
这个信息我们可以在webservice中查到
<xs:element name="GetMyFriends">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="userId" type="xs:int"/>
<xs:element minOccurs="0" name="password" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
接下来开始做对webservice请求数据的工作,请求webservice函数以及封装要用的两个参数(userId和password)
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
request.addProperty("userId", "123456");
request.addProperty("password", "test");
之后我们给定义发送数据的信封的封装格式
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11 );
发出请求
envelope.setOutputSoapObject(request);
AndroidHttpTransport aht = new AndroidHttpTransport(URL);
aht.call(null, envelope);
接着就可以定义一个SoapObject类型的实例去获取我们返回来的数据
SoapObject so = (SoapObject) envelope.bodyIn;
这里如果是返回来的数据只有一行并且只有一个值,比如验证函数,返回boolean类型的话,操作比较简单,String getReturn= so.getProperty("return"); 这个getReturn就是你要获取的值。
但
是如果返回来是多行的值的话,这个方法就不行了,我们必须对返回来的信息做一些解析。我曾试过用J2SE的标准方式来获取,但是会报错,最主要的可能是他
的方式在android当中不能使用。所以在这里我用了正则表达式这种方式来进行数据的解析,我们先来看一下他返回的数据的结构是什么情况。
GetMyFriendsResponse{return=FriendsMessage{
permitList=anyType{nickName=
我爱罗; singnature=null; userId=2; }; permitList=anyType{nickName=jack;
singnature=null; userId=1004; }; permitList=anyType{nickName=admin;
singnature=leo_admin; userId=1001; };};}
简单看他很想Json结构,但是确不是。。。
就目前的解决方式,我只是通过规律来进行了正则表达式的解析:如解析上面的内容。
//首先取得permitList(好友)的个数
String testPattern = "permitList";
int resultlength = result.length();
cresult = cresult.replace(testPattern, "");
int lastlength = (resultlength - cresult.length()) / testPattern.length();
//取得每个permitList中的值。
String LoginReturn="", pattern="nickName=.*?;//s*singnature=.*?;//s*userId=.*?;";
//动态生成String 数组,存储每个好友的信息
String[] GetFinalReturn = new String[lastlength];
for (int i=0;i<lastlength;i++){
LoginReturn = result.replaceFirst("^.*("+pattern+").*$", "$1");
GetFinalReturn[i] = LoginReturn;
result = result.replace(LoginReturn,"");
}
这个数组里面存储的格式就是nickName=admin; singnature=leo_admin; userId=1001;
这样以来,我们可以根据"="和";"两个符号之间做split操作就可以得到数据。
好了,到此连接webservice和解析返回来的数据的工作就做完了,虽然这个方式看起来很复杂,但是目前来说,用ksoap2方式来连接webservice暂时还没有找到更有效的解决方式。。
转载此文,请说明出处,谢谢。
http://blog.sina.com.cn/s/blog_48b61dc70100i7a7.html
分享到:
相关推荐
通过以上步骤,你就可以利用Ksoap2在Android应用中访问Web Service,查询手机号码归属地。记住,实践是最好的老师,动手尝试编写代码并调试,遇到问题时查阅官方文档或社区资源,会进一步加深对Ksoap2的理解。
标题提到的"Ksoap包 webservice连接包"指的是kSOAP库的一个版本,它包含了对处理中文字符的支持。 kSOAP 1.2 版本是这个库的一个重要里程碑,它引入了对非ASCII字符集,如中文字符的处理。在之前的版本中,由于SOAP...
本篇将详细介绍如何利用ksoap2在Android应用中调用WebService的步骤。 首先,你需要在项目中引入ksoap2的库。你可以从官方或者第三方源下载`ksoap2-android-assembly-3.6.1-jar-with-dependencies.jar`,然后将其...
总的来说,通过ksoap2在Android中与Flex数据进行交互,开发者可以创建功能丰富的移动应用,利用后端服务的强大功能,而无需关心底层网络通信的复杂性。这个项目实例是一个宝贵的参考资料,对于学习和实践Android与...
总之,Android调用Webservice源码的示例是一个很好的学习资源,它展示了Android客户端如何利用ksoap2库与C#编写的Web服务进行交互。通过理解这个示例,开发者可以更好地掌握Android与Web服务的集成技术,为自己的...
kSOAP2是一个开源库,主要用于Android平台上的SOAP(Simple Object Access Protocol)Web服务客户端实现。...通过熟练掌握kSOAP2的使用,开发者可以创建出能够利用Web服务功能的丰富Android应用程序。
在这种场景下,Android客户端可以利用ksoap2-android库来调用这些服务。本篇将深入探讨如何使用ksoap2-android库在Android应用中连接并调用ASP.NET WebService。 首先,ksoap2-android是一个轻量级的库,专门用于在...
**KSOAP2**是Android平台上广泛使用的SOAP客户端库,用于处理与Webservice的通信。KSOAP2提供了一个简单的API,使开发者能够方便地创建、发送和解析SOAP请求。它支持SOAP 1.1和1.2协议,包括封装请求、设置HTTP头、...
在Android开发中,将图片上传到...以上就是Android利用Web Service(SOAP协议)上传图片至服务器的基本流程和关键知识点。实践中,可能还需要根据具体需求进行调整和优化,确保上传过程稳定、高效且用户体验良好。
首先,需要将KSOAP2库导入到Android项目中,这可以通过在build.gradle文件中添加依赖完成。 2. **构造SOAP请求** 使用KSOAP2,我们需要创建一个SoapObject,设置其命名空间和方法名,然后添加参数。 3. **发送...
描述中的“android连接webservicejar非常好用”可能指的是开发者已经封装好的连接Web Service的jar包,这种做法可以简化代码,提高开发效率。如果有一个预先封装好的jar包,可以直接将其导入Android项目中,然后调用...
【Android应用源码WebService+ksoap2列车时刻表】是一个典型的Android开发示例,它展示了如何在Android平台上构建一个能够查询列车时刻表的应用程序。在这个项目中,开发者利用了Web Service技术来获取远程服务器上...
在Android开发中,有时我们需要与远程服务...通过这种方式,你可以方便地在Android应用中与遵循SOAP协议的Web服务进行通信。记得在实际开发中,还要考虑错误处理和网络连接异常的处理,以确保应用的稳定性和用户体验。
2. **Android与Web Service的交互方式**: - **SOAP**:通过HTTP/HTTPS协议传输封装为XML格式的数据,Android可以使用Ksoap2库来调用SOAP Web Service。Ksoap2提供了一套API,使得在Android上创建SOAP请求和解析...
在Android或Java开发中,我们常使用kSOAP库来调用和处理WebService的响应。kSOAP是一个轻量级的库,专门用于处理SOAP消息。以下是使用kSOAP调用WebService的基本步骤: 1. **设置环境**:首先,我们需要在项目中...
本文将详细介绍如何利用SOAP协议来实现Android客户端与服务器端的数据交互,以及具体的实现步骤。 #### 一、概述 SOAP(Simple Object Access Protocol)是一种轻量级协议,用于在分布式环境中交换结构化的和固有...
对于Android,可以使用ksoap2库处理SOAP请求,或者使用HttpURLConnection或OkHttp库处理REST请求。对于iOS,可以使用NSURLSession或第三方库如Alamofire。 4. **处理数据**:接收到服务器响应后,需要解析并处理...
在这个场景中,我们将探讨如何利用WebService来实现用户注册和登录功能,特别关注数据库连接以及Android客户端的集成。 1. **WebService的基本原理**: WebService使用XML(可扩展标记语言)作为数据交换格式,...
本文主要讨论如何在Android设备上利用KSOAP2库调用基于SOAP协议的Web服务。 1. **WebService简介**: WebService是一种跨平台、跨语言的通信标准,基于SOAP(Simple Object Access Protocol)协议,允许不同系统间...
这一部分详细讨论了Android客户端与服务器端交互的技术细节,例如利用KSOAP2库来实现Android端的WebService调用。 标签中的“Android 资源库 移动客户端 移动校园 移动学习”等词汇都紧密相关于当前的技术背景和...