天天看點

【J2ME】KSOAP 調用 .Net Webservice

kSOAP調用Web Service介紹:

SoapObject,一個高度抽象化的類,讓無線裝置完成SOAP調用。可以調用它的addProperty方法填寫要調用的Web Service方法的參數。如下面代碼所示:

SoapObject soap = new SoapObject(serviceNamespace, methodName);

SoapObject構造函數的兩個參數的意思分别是:

serviceNamespace – Web Service的命名空間,嚴格和wsdl檔案裡一緻

methodName – 要調用的方法名。

然後,按照Web Service方法參數的順序,依次調用

soap.addProperty( "username", "user" );

soap.addProperty( "password", "pass" );

一般來說,對于僅僅是String的傳回值,還用不着ClassMap。

接下來就要聲明

HttpTransport tx = new HttpTransport(serviceUrl, soapAction );

這是一個強大的helper類,來完成Http-call transport process,它封裝了network的一切,你完全不用考慮序列化消息。方法HttpTransport.call()自己就能夠發送請求給伺服器、接收伺服器響應并序列化SOAP消息,如下所示:

Object Response = tx.call(request);

用戶端的MIDlet的按鍵事件函數這麼寫,即可:

  1. import  org.ksoap.SoapObject;
  2. import  org.ksoap.transport.HttpTransport;
  3. public   class  KSoapProcess {
  4.      public  KSoapProcess() {
  5.     }
  6.      public  String process() {
  7.         String result =  null ;
  8.          try  {
  9.             SoapObject soap =  new  SoapObject( "http://tempuri.org/" ,
  10.                      "GetDeptList" );
  11.             HttpTransport ht =  new  HttpTransport(
  12.                      "http://localhost:88/LawWebService/Service.asmx" ,
  13.                      "http://tempuri.org/GetDeptList" );
  14.             ht.debug =  true ;
  15.             result = ht.call(soap).toString();
  16.         }  catch  (Exception e) {
  17.             e.printStackTrace();
  18.         }
  19.          return  result;
  20.     }
  21. }

繼續閱讀