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的按鍵事件函數這麼寫,即可:
- import org.ksoap.SoapObject;
- import org.ksoap.transport.HttpTransport;
- public class KSoapProcess {
- public KSoapProcess() {
- }
- public String process() {
- String result = null ;
- try {
- SoapObject soap = new SoapObject( "http://tempuri.org/" ,
- "GetDeptList" );
- HttpTransport ht = new HttpTransport(
- "http://localhost:88/LawWebService/Service.asmx" ,
- "http://tempuri.org/GetDeptList" );
- ht.debug = true ;
- result = ht.call(soap).toString();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return result;
- }
- }