天天看點

ksoap調用webservice

公司伺服器是采用webservice搭建的,用soap協定互動資料,我用過gsoap跟ksoap.跟大家分享一下ksoap如何通路webservice的。如果有webservice伺服器測試的朋友直接看用戶端的代碼參考就可以了,沒有webservice伺服器的朋友可以自己搭建一個測試一下.

伺服器代碼,這裡就貼出一個方法(需要全部代碼的請點選下載下傳連結,下載下傳連結在文檔尾部)

public string getuserinfo(){  

    return "android開發技術交流群 202928390";  

}  

java客服端代碼

package com.ansen.test;  

import org.ksoap2.soapenvelope;  

import org.ksoap2.serialization.soapobject;  

import org.ksoap2.serialization.soapserializationenvelope;  

import org.ksoap2.transport.httptransportse;  

public class test {  

    private static final string namespace ="http://services.jason.tsd/";//你的webservice的命名空間  

    private static string url ="http://localhost:8080/usermgrservice/userinfoport?wsdl";  

    private static final string method_name ="getuserinfo";//你要調用方法的名字  

    public static void main(string[] args) {  

        string name=ksoaptest();//在java項目中可以直接調用  

        system.out.println(name);  

//      new thread(){//如果是android項目必須要開啟一個線程調用,還要增加通路網絡的權限  

//          @override  

//          public void run() {  

//              string name=ksoaptest();  

//              system.out.println(name);  

//          }  

//      }.start();    

    }  

  public static string ksoaptest(){  

      soapobject request = new soapobject(namespace, method_name);//命名空間,要掉用的方法的名字  

//      request.addproperty("userid",9);//如果有參考可以設定參數  

      soapserializationenvelope envelope = new soapserializationenvelope(soapenvelope.ver11); //協定  

      envelope.bodyout = request;    

      httptransportse ht = new httptransportse(url);//wsdl的url連結  

      soapobject soapobject=null;  

        try {  

            ht.call(namespace+"#"+method_name, envelope);  

            soapobject= (soapobject) envelope.bodyin;   

        } catch (exception e) {  

            e.printstacktrace();  

        }  

        string name=soapobject.getproperty(0).tostring();//得到第一個傳回值  

//      string dwsum=soapobject.getproperty(1).tostring();//得到第二個傳回值  

        return name;  

  }  

搭建伺服器以及用戶端調用操作步驟:

1.需要有jdk

2.需要有myeclipse環境

3.myeclipse需要配置tomcat

4.把伺服器代碼導入myeclipse裡面

5.運作tomcat

6.浏覽器輸入位址:http://localhost:8080/usermgrservice/userinfoport?wsdl

7.把java客服端代碼導入myeclipse,運作即可

<a target="_blank" href="http://download.csdn.net/detail/lowprofile_coding/8339735">下載下傳源碼</a>

後記:

最近有朋友發現我的代碼在java項目下運作沒有問題,代碼移植android項目中就會有問題.

1.檢查你的手機跟電腦是同一個區域網路,或者你的伺服器支援外網通路.

2.通路webservice的url不要填寫localhost,寫你tomcat伺服器的ip位址.例如我伺服器ip位址是:192.168.9.129,修改後url如下.

private static string url ="http://192.168.9.129:8080/usermgrservice/userinfoport?wsdl";    

繼續閱讀