首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

施用ksoap2 for android 调用WebService

2012-10-06 
使用ksoap2 for android 调用WebService1,建立WebService服务器??? 这里使用Apache的axis2来建立WebServic

使用ksoap2 for android 调用WebService

1,建立WebService服务器
??? 这里使用Apache的axis2来建立WebService,并使用RPC的方式。
??? (1) 首先下载Axis,然后将解压后的webapp下面的东东拷贝到Tomcat的webapp下面,目录为/webapp/axis。去掉一些不相干的部署文本,如果classes下面的东东。
?? 写server-config.wsdd文件,放置到axis的WEB-INF目录下面。具体如下

?1施用ksoap2 for android 调用WebService<?xml?version="1.0"?encoding="UTF-8"?>
?2施用ksoap2 for android 调用WebService<deployment?xmlns="http://xml.apache.org/axis/wsdd/"
?3施用ksoap2 for android 调用WebService????xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
?4施用ksoap2 for android 调用WebService
?5施用ksoap2 for android 调用WebService????<globalConfiguration>
?6施用ksoap2 for android 调用WebService????????<parameter?name="sendMultiRefs"?value="true"?/>
?7施用ksoap2 for android 调用WebService????????<parameter?name="disablePrettyXML"?value="true"?/>
?8施用ksoap2 for android 调用WebService????????<parameter?name="dotNetSoapEncFix"?value="true"?/>
?9施用ksoap2 for android 调用WebService????????<parameter?name="enableNamespacePrefixOptimization"?value="false"?/>
10施用ksoap2 for android 调用WebService????????<parameter?name="sendXMLDeclaration"?value="true"?/>
11施用ksoap2 for android 调用WebService????????<parameter?name="sendXsiTypes"?value="true"?/>
12施用ksoap2 for android 调用WebService????????<parameter?name="attachments.implementation"
13施用ksoap2 for android 调用WebService????????????value="org.apache.axis.attachments.AttachmentsImpl"?/>
14施用ksoap2 for android 调用WebService????</globalConfiguration>
15施用ksoap2 for android 调用WebService
16施用ksoap2 for android 调用WebService????<handler?type="java:org.apache.axis.handlers.http.URLMapper"
17施用ksoap2 for android 调用WebService????????name="URLMapper"?/>
18施用ksoap2 for android 调用WebService????<service?name="HelloService"?provider="java:RPC">
19施用ksoap2 for android 调用WebService????????<parameter?name="className"?value="cn.vaga.testws.HelloService"?/>
20施用ksoap2 for android 调用WebService????????<parameter?name="scope"?value="request"?/>
21施用ksoap2 for android 调用WebService????????<parameter?name="allowedMethods"?value="*"?/>
22施用ksoap2 for android 调用WebService????????
23施用ksoap2 for android 调用WebService????????<operation?name="sayHello"?qname="operNS:sayHello"?xmlns:operNS="http://testws.vaga.cn"?returnQName="sayHelloResult"?returnType="rtns:ListOfHello"?xmlns:rtns="http://testws.vaga.cn"?/>
24施用ksoap2 for android 调用WebService?
25施用ksoap2 for android 调用WebService????<typeMapping
26施用ksoap2 for android 调用WebService???????xmlns:ns="http://localhost:8080/TestWS/services/HelloService"
27施用ksoap2 for android 调用WebService???????qname="ns:ListOfHello"
28施用ksoap2 for android 调用WebService???????type="java:java.lang.String[]"
29施用ksoap2 for android 调用WebService???????serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
30施用ksoap2 for android 调用WebService???????deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
31施用ksoap2 for android 调用WebService???????encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
32施用ksoap2 for android 调用WebService?????/>????
33施用ksoap2 for android 调用WebService????????<messageReceiver
34施用ksoap2 for android 调用WebService????????????class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"?/>
35施用ksoap2 for android 调用WebService????????????
36施用ksoap2 for android 调用WebService
37施用ksoap2 for android 调用WebService????</service>
38施用ksoap2 for android 调用WebService????<transport?name="http">
39施用ksoap2 for android 调用WebService????????<requestFlow>
40施用ksoap2 for android 调用WebService????????????<handler?type="URLMapper"?/>
41施用ksoap2 for android 调用WebService????????</requestFlow>
42施用ksoap2 for android 调用WebService????</transport>
43施用ksoap2 for android 调用WebService</deployment>

?? (2) 写业务类HelloService.java

???1施用ksoap2 for android 调用WebServicepackage?cn.vaga.testws;
?2施用ksoap2 for android 调用WebService
?3施用ksoap2 for android 调用WebService
?4施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebServicepublic?class?HelloService施用ksoap2 for android 调用WebService{
?5施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebService????public?String[]?sayHello()施用ksoap2 for android 调用WebService{
?6施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebService????????return?new?String[]施用ksoap2 for android 调用WebService{"www","1232","12dd"};
?7施用ksoap2 for android 调用WebService????}
?8施用ksoap2 for android 调用WebService????
?9施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebService????public?String?sayHelloToPerson(String?name)施用ksoap2 for android 调用WebService{
10施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebService?????????if(name?==?null?||?"".equals(name))施用ksoap2 for android 调用WebService{
11施用ksoap2 for android 调用WebService??????????????name?=?"nobody";
12施用ksoap2 for android 调用WebService?????????}
13施用ksoap2 for android 调用WebService?????????
14施用ksoap2 for android 调用WebService?????????return?"Hello?"?+?name;
15施用ksoap2 for android 调用WebService????}
16施用ksoap2 for android 调用WebService}

??? 然后将编译好的class文件放置到axis/WEB-INF/classes下面,注意包结构。启动Tomcat。
?? (3) 在浏览器中输入http://192.168.1.110:8080/TestWS/services/HelloService?wsdl,OK,如果出现了XML代码表示你成功了。

2、使用ksoap2的客户端
???? (1) 建立客户端类

?1施用ksoap2 for android 调用WebServicepackage?cn.vaga.testwsclient;
?2施用ksoap2 for android 调用WebService
?3施用ksoap2 for android 调用WebServiceimport?java.util.List;
?4施用ksoap2 for android 调用WebServiceimport?java.util.Vector;
?5施用ksoap2 for android 调用WebService
?6施用ksoap2 for android 调用WebServiceimport?org.ksoap2.SoapEnvelope;
?7施用ksoap2 for android 调用WebServiceimport?org.ksoap2.serialization.SoapObject;
?8施用ksoap2 for android 调用WebServiceimport?org.ksoap2.serialization.SoapSerializationEnvelope;
?9施用ksoap2 for android 调用WebServiceimport?org.ksoap2.transport.AndroidHttpTransport;
10施用ksoap2 for android 调用WebService
11施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebServicepublic?class?Client??施用ksoap2 for android 调用WebService{
12施用ksoap2 for android 调用WebService????private?static?final?String?NAMESPACE?=?"http://testws.vaga.cn";????
13施用ksoap2 for android 调用WebService????private?static?String?URL?=?"http://192.168.1.110:8080/TestWS/services/HelloService";
14施用ksoap2 for android 调用WebService????private?static?final?String?METHOD_NAME?=?"sayHello";
15施用ksoap2 for android 调用WebService????private?static?String?SOAP_ACTION?=?NAMESPACE?+?"/"?+?METHOD_NAME;?
16施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebService????public?static?String?getHello()?施用ksoap2 for android 调用WebService{
17施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebService????????try?施用ksoap2 for android 调用WebService{
18施用ksoap2 for android 调用WebService????????????SoapObject?rpc?=?new?SoapObject(NAMESPACE,?METHOD_NAME);
19施用ksoap2 for android 调用WebService???????????//?rpc.addProperty("theCityName",?cityName);
20施用ksoap2 for android 调用WebService
21施用ksoap2 for android 调用WebService????????????AndroidHttpTransport?ht?=?new?AndroidHttpTransport(URL);
22施用ksoap2 for android 调用WebService????????????ht.debug?=?true;
23施用ksoap2 for android 调用WebService
24施用ksoap2 for android 调用WebService????????????SoapSerializationEnvelope?envelope?=?new?SoapSerializationEnvelope(
25施用ksoap2 for android 调用WebService????????????????????SoapEnvelope.VER11);
26施用ksoap2 for android 调用WebService????????????
27施用ksoap2 for android 调用WebService????????????envelope.bodyOut?=?rpc;
28施用ksoap2 for android 调用WebService????????????envelope.dotNet?=?true;
29施用ksoap2 for android 调用WebService????????????envelope.setOutputSoapObject(rpc);
30施用ksoap2 for android 调用WebService
31施用ksoap2 for android 调用WebService????????????ht.call(SOAP_ACTION,?envelope);
32施用ksoap2 for android 调用WebService????????????
33施用ksoap2 for android 调用WebService//????????????debug(LOG_TAG,?"DUMP>>?"?+?ht.requestDump);
34施用ksoap2 for android 调用WebService//????????????debug(LOG_TAG,?"DUMP<<?"?+?ht.responseDump);
35施用ksoap2 for android 调用WebService
36施用ksoap2 for android 调用WebService????????????SoapObject?result?=?(SoapObject)?envelope.bodyIn;
37施用ksoap2 for android 调用WebService????????????Vector?vrct?=?(Vector)?result.getProperty("sayHelloResult");
38施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebService????????????for(int?i?=?0;?i?<?vrct.size();i++)施用ksoap2 for android 调用WebService{
39施用ksoap2 for android 调用WebService????????????????System.out.println(?vrct.get(i));
40施用ksoap2 for android 调用WebService????????????}
41施用ksoap2 for android 调用WebService????????????String?ss?=?"";
42施用ksoap2 for android 调用WebService//???????????for(String?s?:?res){
43施用ksoap2 for android 调用WebService//???????????????ss?+=?s;
44施用ksoap2 for android 调用WebService//???????????}
45施用ksoap2 for android 调用WebService???????????
46施用ksoap2 for android 调用WebService???????????return?ss;
47施用ksoap2 for android 调用WebService施用ksoap2 for android 调用WebService????????}?catch?(Exception?e)?施用ksoap2 for android 调用WebService{
48施用ksoap2 for android 调用WebService????????????e.printStackTrace();
49施用ksoap2 for android 调用WebService????????}
50施用ksoap2 for android 调用WebService????????return?null;
51施用ksoap2 for android 调用WebService????}
52施用ksoap2 for android 调用WebService
53施用ksoap2 for android 调用WebService}
54施用ksoap2 for android 调用WebService
55施用ksoap2 for android 调用WebService


??? (2) 建好后,写一个main方法调用它就可以了。

最后,ksoap2非常的小,一百多K吧,使用它我们可以在Android程序中方便的调用WebService,而不用加载那些庞大的jar包。
最后给一个ksoap2 for android的下载地址。

注意:将扩展名改为jar即可!

热点排行