溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

android中如何使用Soap協(xié)議調(diào)用webservice實(shí)現(xiàn)手機(jī)歸屬地查詢

發(fā)布時(shí)間:2021-09-23 14:45:14 來(lái)源:億速云 閱讀:288 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下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 HeaderSOAP 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)行效果:

android中如何使用Soap協(xié)議調(diào)用webservice實(shí)現(xiàn)手機(jī)歸屬地查詢    

不存在此號(hào)用戶時(shí):

android中如何使用Soap協(xié)議調(diào)用webservice實(shí)現(xiàn)手機(jī)歸屬地查詢

android中如何使用Soap協(xié)議調(diào)用webservice實(shí)現(xiàn)手機(jī)歸屬地查詢

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è)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI