您好,登錄后才能下訂單哦!
小編給大家分享一下android中如何使用Soap協(xié)議調(diào)用webservice實(shí)現(xiàn)手機(jī)歸屬地查詢,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
一:Web服務(wù)(webservice)是局域網(wǎng)和因特網(wǎng)上能夠支持機(jī)器與機(jī)器之間互操作的軟件系統(tǒng)。它有一個(gè)用WSDL描述的接口,其它系統(tǒng)可以使用SOAP消息以接口所描述的方式與之交互。SOAP協(xié)議是Web服務(wù)賴以生存的基礎(chǔ)。
Web服務(wù)的目標(biāo)是實(shí)現(xiàn)在這樣的分布式環(huán)境環(huán)境中,各個(gè)組織內(nèi)部及各組織之間任意數(shù)量的應(yīng)用程序或應(yīng)用程序組件能夠以與平臺(tái)無(wú)關(guān)和語(yǔ)言無(wú)關(guān)的方式無(wú)縫交互。
Web服務(wù)是通過(guò)統(tǒng)一資源標(biāo)識(shí)URI標(biāo)識(shí)的軟件系統(tǒng),它的共用接口和綁定用XML來(lái)定義和描述。軟件系統(tǒng)可以通過(guò)Internet協(xié)議傳遞基于XML的消息,這樣就可以用Web Service 所定義的方式與其交互。
Web服務(wù)使我們能夠?qū)σ蛱鼐W(wǎng)或網(wǎng)絡(luò)上的一個(gè)對(duì)象進(jìn)行遠(yuǎn)程調(diào)用RPC(Remote Procedure Call)。Web服務(wù)使用中性平臺(tái)標(biāo)準(zhǔn)(HTTP和XML),對(duì)客戶完全隱藏執(zhí)行任務(wù)的細(xì)節(jié),客戶只需要知道這個(gè)服務(wù)的URL或方法調(diào)用使用的數(shù)據(jù)類型,為不同平臺(tái)提供服務(wù)。
SOAP、WSDL、和UDDI是webservice技術(shù)體系的核心:
(1)WSDL是Web服務(wù)的描述語(yǔ)言,它類似于CORBA的IDL用以描述Web服務(wù)的交互消息格式、端口類型以及傳輸協(xié)議的綁定。
(2)Web服務(wù)使用UDDI作為目錄機(jī)制,服務(wù)發(fā)布者可以將服務(wù)信息注冊(cè)到UDDI,從而方便服務(wù)使用者進(jìn)行服務(wù)查找。
(3)SOAP提供一個(gè)標(biāo)準(zhǔn)的包裝結(jié)構(gòu)用以在多種標(biāo)準(zhǔn)Internet技術(shù)上(包括SMTP、HTTP和FTP)傳輸XML文檔。它還定義了用XML傳送非XML RPC調(diào)用的編碼和綁定標(biāo)準(zhǔn),SOAP為RPC提供了一個(gè)簡(jiǎn)單的結(jié)構(gòu):文檔交換。采用標(biāo)準(zhǔn)傳輸機(jī)制后,異構(gòu)的客戶和服務(wù)器能一下子可互操作。
二:SOAP(Simple Object Access Protocol)即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議,它是一個(gè)輕型分布式計(jì)算協(xié)議,允許在一個(gè)分散、分布的環(huán)境交換結(jié)構(gòu)化的信息。SOAP規(guī)范定義了在分布式系統(tǒng)中傳送消息的框架和支持遠(yuǎn)程過(guò)程調(diào)用和響應(yīng)的慣例。SOAP消息是以SOAP
Envelope為根元素,內(nèi)含2個(gè)子元素:SOAP Header和SOAP Body。SOAP Body是強(qiáng)制性的,是SOAP消息必須要有的元素,它包含了SOAP消息的主要內(nèi)容,由最終接收SOAP消息的節(jié)點(diǎn)處理。SOAP Body是應(yīng)用的有效載荷,可以包含應(yīng)用數(shù)據(jù)、RPC方法和參數(shù)以及SOAP錯(cuò)誤。
三:下面是android開(kāi)發(fā)中基于soap協(xié)議與服務(wù)器交互實(shí)現(xiàn)手機(jī)歸屬地查詢案例 。
1。運(yùn)行效果:
不存在此號(hào)用戶時(shí):
2.布局文件代碼:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/map" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="80dp" android:text="手機(jī)號(hào)碼:" android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentRight="@+id/text" android:layout_marginTop="80dp" android:layout_toRightOf="@+id/text" > </EditText> <Button android:id="@+id/search" android:layout_width="60dp" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/phone" android:text="查詢" /> <TextView android:id="@+id/res" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="250dp" android:text="查詢結(jié)果:" android:textAppearance="?android:attr/textAppearanceLarge" /> <EditText android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="250dp" android:layout_toRightOf="@+id/res" /> </RelativeLayout>
3.創(chuàng)建手機(jī)歸屬地查詢工具類PhoneUtil.java
public class PhoneUtil { public static Object searchPlace(String wsdlurl,String method,String phonenumber) { //指定webservice的命名空間和調(diào)用的方法名 String namespace="http://WebXml.com.cn/"; SoapObject soap=new SoapObject(namespace,method); //添加屬性,只要設(shè)置參數(shù)的順序一致,調(diào)用方法的參數(shù)名不一定與服務(wù)端的WebService類中的方法參數(shù)名一致 soap.addProperty("mobileCode",phonenumber); soap.addProperty("userID", null); //通過(guò)SoapSerializationEnvelope類的構(gòu)造方法設(shè)置SOAP協(xié)議的版本號(hào)。 SoapSerializationEnvelope soapEnvelope=new SoapSerializationEnvelope(SoapEnvelope.VER11); //設(shè)置需要傳出的Soap soapEnvelope.bodyOut=soap; soapEnvelope.dotNet=true; soapEnvelope.setOutputSoapObject(soap); //創(chuàng)建http傳輸對(duì)象 HttpTransportSE transportSE=new HttpTransportSE(wsdlurl); //soap操作url String SOAP_ACTION=namespace+method; try { //請(qǐng)求調(diào)用WebService方法 transportSE.call(SOAP_ACTION, soapEnvelope); //使用getResponse獲得WebService方法解析xml的返回結(jié)果 Object result=soapEnvelope.getResponse(); if(result!=null) return result; } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } return null; } }
4.MainActivity類
public class MainActivity extends Activity { private EditText phonenum; private Button search; private EditText result; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //設(shè)置無(wú)標(biāo)題欄 //setTheme(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //查找組件 phonenum=(EditText) this.findViewById(R.id.phone); search=(Button) this.findViewById(R.id.search); result=(EditText) this.findViewById(R.id.result); search.setOnClickListener(new OnClickListener() { public void onClick(View v) { String phone=phonenum.getText().toString(); //web服務(wù)端手機(jī)歸屬地url String wsdlUrl="http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx"; //調(diào)用web提供的方法getMobileCodeInfo得到歸屬地 Object answer=PhoneUtil.searchPlace(wsdlUrl,"getMobileCodeInfo",phone); //查詢結(jié)果顯示在結(jié)果文本域 result.setText(answer.toString()); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }
看完了這篇文章,相信你對(duì)“android中如何使用Soap協(xié)議調(diào)用webservice實(shí)現(xiàn)手機(jī)歸屬地查詢”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。