資源描述:
《安卓使用webservise》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、Android調(diào)用WebService作者:歐陽旻WebService是一種基于SOAP協(xié)議的遠程調(diào)用標準,通過webservice可以將不同操作系統(tǒng)平臺、不同語言、不同技術(shù)整合到一塊。在AndroidSDK中并沒有提供調(diào)用WebService的庫,因此,需要使用第三方的SDK來調(diào)用WebService。PC版本的WEbservice客戶端庫非常豐富,例如Axis2,CXF等,但這些開發(fā)包對于Android系統(tǒng)過于龐大,也未必很容易移植到Android系統(tǒng)中。因此,這些開發(fā)包并不是在我們的考慮范圍內(nèi)。適合手機的WebService客戶端的SDK
2、有一些,比較常用的有Ksoap2,可以從http://code.google.com/p/ksoap2-android/downloads/list進行下載;將下載的ksoap2-android-assembly-2.4-jar-with-dependencies.jar包復(fù)制到Eclipse工程的lib目錄中,當然也可以放在其他的目錄里。同時在Eclipse工程中引用這個jar包。具體調(diào)用調(diào)用webservice的方法為:(1)指定webservice的命名空間和調(diào)用的方法名,如:SoapObjectrequest=newSoapObject
3、(http://service,”getName”);SoapObject類的第一個參數(shù)表示W(wǎng)ebService的命名空間,可以從WSDL文檔中找到WebService的命名空間。第二個參數(shù)表示要調(diào)用的WebService方法名。(2)設(shè)置調(diào)用方法的參數(shù)值,如果沒有參數(shù),可以省略,設(shè)置方法的參數(shù)值的代碼如下:Request.addProperty(“param1”,”value”);Request.addProperty(“param2”,”value”);要注意的是,addProperty方法的第1個參數(shù)雖然表示調(diào)用方法的參數(shù)名,但該參數(shù)值并
4、不一定與服務(wù)端的WebService類中的方法參數(shù)名一致,只要設(shè)置參數(shù)的順序一致即可。(3)生成調(diào)用Webservice方法的SOAP請求信息。該信息由SoapSerializationEnvelope對象描述,代碼為:SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(SoapEnvelope.VER11);Envelope.bodyOut=request;創(chuàng)建SoapSerializationEnvelope對象時需要通過SoapSerializationEnvelo
5、pe類的構(gòu)造方法設(shè)置SOAP協(xié)議的版本號。該版本號需要根據(jù)服務(wù)端WebService的版本號設(shè)置。在創(chuàng)建SoapSerializationEnvelope對象后,不要忘了設(shè)置SOAPSoapSerializationEnvelope類的bodyOut屬性,該屬性的值就是在第一步創(chuàng)建的SoapObject對象。(4)創(chuàng)建HttpTransportsSE對象。通過HttpTransportsSE類的構(gòu)造方法可以指定WebService的WSDL文檔的URL:HttpTransportSEht=newHttpTransportSE(“http://1
6、92.168.18.17:80/axis2/service/SearchNewsService?wsdl”);(5)使用call方法調(diào)用WebService方法,代碼:ht.call(null,envelope);Call方法的第一個參數(shù)一般為null,第2個參數(shù)就是在第3步創(chuàng)建的SoapSerializationEnvelope對象。(6)使用getResponse方法獲得WebService方法的返回結(jié)果,代碼:SoapObjectsoapObject=(SoapObject)envelope.getResponse();以下為簡單的實現(xiàn)一
7、個天氣查看功能的例子:publicclassWebServiceextendsActivity{privatestaticfinalStringNAMESPACE="http://WebXml.com.cn/";//WebService地址privatestaticStringURL="http://www.webxml.com.cn/webservices/weatherwebservice.asmx";privatestaticfinalStringMETHOD_NAME="getWeatherbyCityName";privatestat
8、icStringSOAP_ACTION="http://WebXml.com.cn/getWeatherbyCityName";privateStri