歡迎使用我的 在線工具

          小D

          讀歷史、看小說、寫程序都是我所愛。技術不好,頭腦不靈光,靠的是興趣。
          隨筆 - 35, 文章 - 25, 評論 - 13, 引用 - 0
          數據加載中……

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

           8    
           9    public String sayHelloToPerson(String name){
          10         if(name == null || "".equals(name)){
          11              name = "nobody";
          12         }

          13         
          14         return "Hello " + name;
          15    }

          16}
              然后將編譯好的class文件放置到axis/WEB-INF/classes下面,注意包結構。啟動Tomcat。
             (3) 在瀏覽器中輸入http://192.168.1.110:8080/TestWS/services/HelloService?wsdl,OK,如果出現了XML代碼表示你成功了。

          2、使用ksoap2的客戶端
               (1) 建立客戶端類
           1package cn.vaga.testwsclient;
           2
           3import java.util.List;
           4import java.util.Vector;
           5
           6import org.ksoap2.SoapEnvelope;
           7import org.ksoap2.serialization.SoapObject;
           8import org.ksoap2.serialization.SoapSerializationEnvelope;
           9import org.ksoap2.transport.AndroidHttpTransport;
          10
          11public class Client  {
          12    private static final String NAMESPACE = "http://testws.vaga.cn";    
          13    private static String URL = "http://192.168.1.110:8080/TestWS/services/HelloService";
          14    private static final String METHOD_NAME = "sayHello";
          15    private static String SOAP_ACTION = NAMESPACE + "/" + METHOD_NAME; 
          16    public static String getHello() {
          17        try {
          18            SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
          19           // rpc.addProperty("theCityName", cityName);
          20
          21            AndroidHttpTransport ht = new AndroidHttpTransport(URL);
          22            ht.debug = true;
          23
          24            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
          25                    SoapEnvelope.VER11);
          26            
          27            envelope.bodyOut = rpc;
          28            envelope.dotNet = true;
          29            envelope.setOutputSoapObject(rpc);
          30
          31            ht.call(SOAP_ACTION, envelope);
          32            
          33//            debug(LOG_TAG, "DUMP>> " + ht.requestDump);
          34//            debug(LOG_TAG, "DUMP<< " + ht.responseDump);
          35
          36            SoapObject result = (SoapObject) envelope.bodyIn;
          37            Vector vrct = (Vector) result.getProperty("sayHelloResult");
          38            for(int i = 0; i < vrct.size();i++){
          39                System.out.println( vrct.get(i));
          40            }

          41            String ss = "";
          42//           for(String s : res){
          43//               ss += s;
          44//           }
          45           
          46           return ss;
          47        }
           catch (Exception e) {
          48            e.printStackTrace();
          49        }

          50        return null;
          51    }

          52
          53}

          54
          55

              (2) 建好后,寫一個main方法調用它就可以了。

          最后,ksoap2非常的小,一百多K吧,使用它我們可以在Android程序中方便的調用WebService,而不用加載那些龐大的jar包。
          最后給一個ksoap2 for android的下載地址
          注意:將擴展名改為jar即可!

          posted on 2011-05-07 19:12 vagasnail 閱讀(5571) 評論(4)  編輯  收藏 所屬分類: java 、Android

          評論

          # re: 使用ksoap2 for android 調用WebService[未登錄]  回復  更多評論   

          能實現嗎
          2012-04-09 16:47 | bb

          # re: 使用ksoap2 for android 調用WebService  回復  更多評論   

          我這里不是實現了嗎?@bb
          2012-05-16 09:04 | vagasnail

          # re: 使用ksoap2 for android 調用WebService  回復  更多評論   

          GPRS下鏈接是否通過?
          2012-12-08 22:55 | 398774558@qq.com

          # re: 使用ksoap2 for android 調用WebService  回復  更多評論   

          @398774558@qq.com
          沒有測試過,但如果GPRS上面有問題,那也只能是網絡問題了。
          2013-09-05 11:39 | vagasnail
          主站蜘蛛池模板: 固镇县| 江油市| 苗栗市| 乌兰察布市| 新竹县| 大关县| 都江堰市| 安图县| 正阳县| 阳山县| 山阴县| 鄂尔多斯市| 灯塔市| 霍山县| 呼伦贝尔市| 基隆市| 玛纳斯县| 建平县| 垣曲县| 旅游| 彭山县| 高要市| 左云县| 合川市| 惠州市| 车险| 南昌县| 大姚县| 友谊县| 福贡县| 武清区| 郁南县| 双江| 曲阳县| 义马市| 天柱县| 合川市| 六盘水市| 九龙城区| 黄山市| 宁德市|