- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Android使用Ksoap2调用webservice接口详解
WebService 是一种基于SOAP协议的远程调用标准。通过WebService可以将不同操作系统平台,不同语言、不同技术整合到一起。在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方类库(KSOAP2)来调用WebService。在本文将介绍在Android 中调用WebService的具体细节,并在最后给出一个完整的例子来演示如何使用KSOAP2来调用WebService。安装第三方类库:KSOAP2PC版本的WebService客户端类库非常丰富,例如,Axis2、CXF等,但这些类库对于Android系统过于庞大,也未必很容易移植到 Android系统上。因此,这些开发包并不在我们考虑的范围内。适合手机的WebService客户端类库也有一些。本例使用了比较常用的 KSOAP2。读者可以从如下的地址下载Android版的KSOAP2。/p/ksoap2-android/downloads/list?can=1q=colspec=Filename+Summary+Uploaded+Size+DownloadCount将下载后的jar文件复制到Eclipse工程的lib目录中(如果没有该目录,可以新建一个,当然,也可以放在其他的目录中)。并在Eclipse工程中引用这个jar包,引用后的Eclipse工程目录结构如图1所示。图1 引用KSOAP2开发包使用KSOAP2调用WebService读者可按如下6步来调用WebService的方法。1. 指定WebService的命名空间和调用的方法名,代码如下:1SoapObject request = newSoapObject(http://service, getName);SoapObject类的第1个参数表示WebService的命名空间,可以从WSDL文档中找到WebService的命名空间。第2个参数表示要调用的WebService方法名。2. 设置调用方法的参数值,这一步是可选的,如果方法没有参数,可以省略这一步。设置方法的参数值的代码如下:1request.addProperty(param1, value1); 2request.addProperty(param2, value2);要注意的是,addProperty方法的第1个参数虽然表示调用方法的参数名,但该参数值并不一定与服务端的WebService类中的方法参数名一致,只要设置参数的顺序一致即可。3. 生成调用WebService方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述,代码如下:1SoapSerializationEnvelope envelope = newSoapSerializationEnvelope(SoapEnvelope.VER11); 2envelope.bodyOut = request;创建SoapSerializationEnvelope对象时需要通过SoapSerializationEnvelope类的构造方法设置SOAP协议的版本号。该版本号需要根据服务端WebService的版本号设置。在创建SoapSerializationEnvelope对象后,不要忘了设置 SoapSerializationEnvelope类的bodyOut属性,该属性的值就是在第1步创建的SoapObject对象。4. 创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL,代码如下:1HttpTransportSE ht = 2newHttpTransportSE(56:8080/axis2/services/SearchProductService?wsdl);5. 使用call方法调用WebService方法,代码如下:1ht.call(null, envelope);call方法的第1个参数一般为null,第2个参数就是在第3步创建的SoapSerializationEnvelope对象。6. 使用getResponse方法获得WebService方法的返回结果,代码如下:1SoapObject soapObject = (SoapObject) envelope.getResponse();示例:通过WebService查询产品信息本例涉及到一个WebService服务端程序和一个OPhone客户端程序。读者可直接将服务端程序(axis2目录)复制到Tomcat安装目录\webapps目录中,然后启动Tomcat,并在浏览器地址栏中输入如下的URL:http://localhost:8080/axis2如果在浏览器中显
文档评论(0)