WebService1、數據交互

調用webservice總結:
  1.加入第三方的jar包 Ksoap2-android-XXX  
  2.訪問響應的webservice的網站,查看響應的信息,獲得nameSpace,methodName,url,soapAction
  3.若是request信息還有帶有SoapHander的。那麼就要封裝:依據參數封裝:java

  Element[] header = new Element[1]; 
  header[0] = new Element().createElement(nameSpace, "SoapHeader"); 
                
  Element userName = new Element().createElement(nameSpace, "UserID"); 
  userName.addChild(Node.TEXT, UserID); 
  header[0].addChild(Node.ELEMENT, userName); 
                
  Element pass = new Element().createElement(nameSpace, "PassWord"); 
  pass.addChild(Node.TEXT, PassWord); 
  header[0].addChild(Node.ELEMENT, pass); 

4.封裝request信息的SoapBodyandroid

 // 指定WebService的命名空間和調用的方法名
 SoapObject  soapObject=new SoapObject(nameSpace, methodName);
 //處理soap12:Body數據部分,也就是請求數據的參數
 soapObject.addProperty("loginName",username);
 soapObject.addProperty("password",password);

 5.指定SoapSerializationEnvelope信息web

 //SoapEnvelope.VER11 表示使用的soap協議的版本號 1.1 或者是1.2
SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.headerOut=header;
envelope.bodyOut=soapObject;
envelope.dotNet = true; 
envelope.setOutputSoapObject(soapObject); 

6.指定HttpTransportSE服務器

 HttpTransportSE ht = new HttpTransportSE(url); 

 7.訪問webservice服務器網站

ht.call(soapAction, envelope);

 8.兩種方式獲取服務器返回的信息:ui

try{ result =(SoapObject) soapEnvelope.getResponse();}
catch(ClassCastException e){ result =(SoapObject)soapEnvelope.bodyIn;}

9.解析字符串str獲取客戶端想要的信息url

注意:1.在作android  Webservice開發的時候通常狀況下你們接受webservice服務器返回值的時候都是使用SoapObject soapObject = (SoapObject) envelope.getResponse();這個來接受返回來的值,但這種方法每每會產生java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive這樣的錯誤。在服務器端返回值是String類型的數值的時候使用SoapObject soapObject = (SoapObject) envelope.getResponse();和 SoapObject result = (SoapObject)envelope.bodyIn;這兩種方法來接受值都會報出 java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive這樣的錯誤。 咱們能夠使用 Object object = (Object)envelope.getResponse();就能夠解決這種錯誤。spa

2.若是在導入ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar後雖然沒有報錯,可是運行時仍是提示某個class找不到,必須:code

項目的Properties-->Java Build Path-->Order and Export 對相應的jar包打上勾,而後將工程clean,而後編譯運行。blog

相關文章
相關標籤/搜索