91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

android如何使用soap協議訪問webservice實現天氣預報功能

發布時間:2021-09-23 14:51:16 來源:億速云 閱讀:174 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“android如何使用soap協議訪問webservice實現天氣預報功能”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“android如何使用soap協議訪問webservice實現天氣預報功能”這篇文章吧。

首先創建布局文件,顯示出需要查找的天氣情況,可以查出今天明天或者后天的天氣情況。將需要的信息顯示出來,想要顯示查找的城市圖片,要把所有的城市照片以城市代號命名的圖片都要存儲到項目中,數據量大,所以這里只是顯示出天氣的圖片,共有三十二張,可以網上下載,記住順序一定不要弄錯。

布局文件main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"
            android:text="輸入城市:"
            android:textSize="20dp" />

        <EditText
            android:id="@+id/city"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="fill_horizontal" >
        </EditText>
    </LinearLayout>

    <Button
        android:id="@+id/search"
        android:layout_gravity="right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="查詢天氣" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="top"
            android:text="天氣情況:"
            android:textSize="20dp" />

        <EditText
            android:id="@+id/state"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:inputType="textMultiLine"
            android:minLines="4" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="明日天氣:"
            android:textSize="20dp" />

        <ImageView
            android:id="@+id/image"
            android:layout_width="190dp"
            android:layout_height="160dp"
            android:scaleType="fitXY" />
    </LinearLayout>

</LinearLayout>

2.然后編寫activity代碼,因為要用到Soap協議,所以首先要到網站下載soap的jar包,這里用到的是ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar,因為比較高的版本,將jar包粘貼到項目libs文件下,環境會自動匹配將jar包加載,會在項目下的dependencies下找到soap包,則添加成功。

android如何使用soap協議訪問webservice實現天氣預報功能

android如何使用soap協議訪問webservice實現天氣預報功能

3.注意要用到網上資源解析xml,則在AndroidManifest.xml中設置用戶權限

android如何使用soap協議訪問webservice實現天氣預報功能

4.編寫通過soap協議發送天氣預報請求使用web服務得到并返回結果的工具類。

    獲得天氣狀況

     
(1)getResponse()方法查天氣預報得到的是一系列的值,不是單一值,所以返回結果用SoapObject接收,調用它的getProperty()得到需要的信息,以下是getWeatherbyCityNameResult的23個屬性:

android如何使用soap協議訪問webservice實現天氣預報功能

      

     (2)獲取數組這些屬性值也可用另一種方法:

      SoapObject result = (SoapObject) envelope.bodyIn;
      SoapObject detail = (SoapObject) result.getProperty("getWeatherbyCityNameResult");

代碼:

public class WeatherStateSearch {
	public static SoapObject searchWea(String wsdlurl,String method,String cityname) {
		//指定webservice的命名空間和調用的方法名
		String namespace="http://WebXml.com.cn/";
		SoapObject  soap=new SoapObject(namespace,method);
		//添加屬性,只要設置參數的順序一致,調用方法的參數名不一定與服務端的WebService類中的方法參數名一致
		soap.addProperty("theCityName",cityname);
		//通過SoapSerializationEnvelope類的構造方法設置SOAP協議的版本號。 
		SoapSerializationEnvelope soapEnvelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
		//設置需要傳出的Soap
		soapEnvelope.bodyOut=soap;
		soapEnvelope.dotNet=true;
		soapEnvelope.setOutputSoapObject(soap);
		//創建http傳輸對象
		HttpTransportSE transportSE=new HttpTransportSE(wsdlurl);
		//soap操作url
		String SOAP_ACTION=namespace+method;
		try {
			//請求調用WebService方法
			transportSE.call(SOAP_ACTION, soapEnvelope);
			//使用getResponse獲得WebService方法解析xml的返回結果
			SoapObject result=(SoapObject) soapEnvelope.getResponse();
			if(result!=null)
				return result;
		} catch (IOException e) {
			e.printStackTrace();
		} catch (XmlPullParserException e) {
			e.printStackTrace();
		}
		return null;
	}
}

5.項目main類的關鍵代碼:

web服務端天氣預報url:"http://www.webxml.com.cn/webservices/weatherwebservice.asmx";

public class MainActivity extends Activity {
	private EditText city;
	private Button search;
	private EditText weastate;
	private ImageView img;
	 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      //查找組件
        city=(EditText) this.findViewById(R.id.city);
        search=(Button) this.findViewById(R.id.search);
        weastate=(EditText) this.findViewById(R.id.state);
        img=(ImageView) this.findViewById(R.id.image);
        search.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {				String cname=city.getText().toString();
				//web服務端天氣預報url
				String wsdlUrl="http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
				//調用web提供的方法
				SoapObject weather=WeatherStateSearch.searchWea(wsdlUrl,"getWeatherbyCityName",cname);
				String state=weather.getProperty(10).toString();
				System.out.println(state);
				String strIcon=weather.getProperty(15).toString();
				//查詢結果顯示在結果文本域
				weastate.setText(state);
                                //設置天氣圖片
				img.setImageResource(parseIcon(strIcon));			}
		});
    }
    //查到的圖片轉換為項目中對應的int類型值
	private int parseIcon(String strIcon) {
		if ("0.gif".equals(strIcon)) return R.drawable.a_0;
		if ("1.gif".equals(strIcon)) return R.drawable.a_1;
		if ("3.gif".equals(strIcon)) return R.drawable.a_3;
		if ("4.gif".equals(strIcon)) return R.drawable.a_4;
		if ("5.gif".equals(strIcon)) return R.drawable.a_5;
		if ("6.gif".equals(strIcon)) return R.drawable.a_6;
		if ("7.gif".equals(strIcon)) return R.drawable.a_7;
		if ("8.gif".equals(strIcon)) return R.drawable.a_8;
		if ("9.gif".equals(strIcon)) return R.drawable.a_9;
		if ("10.gif".equals(strIcon)) return R.drawable.a_10;
		if ("11.gif".equals(strIcon)) return R.drawable.a_11;
		if ("12.gif".equals(strIcon)) return R.drawable.a_12;
		if ("13.gif".equals(strIcon)) return R.drawable.a_13;
		if ("14.gif".equals(strIcon)) return R.drawable.a_14;
		if ("15.gif".equals(strIcon)) return R.drawable.a_15;
		if ("16.gif".equals(strIcon)) return R.drawable.a_16;
		if ("17.gif".equals(strIcon)) return R.drawable.a_17;
		if ("18.gif".equals(strIcon)) return R.drawable.a_18;
		if ("19.gif".equals(strIcon)) return R.drawable.a_19;
		if ("20.gif".equals(strIcon)) return R.drawable.a_20;
		if ("21.gif".equals(strIcon)) return R.drawable.a_21;
		if ("22.gif".equals(strIcon)) return R.drawable.a_22;
		if ("23.gif".equals(strIcon)) return R.drawable.a_23;
		if ("24.gif".equals(strIcon)) return R.drawable.a_24;
		if ("25.gif".equals(strIcon)) return R.drawable.a_25;
		if ("26.gif".equals(strIcon)) return R.drawable.a_26;
		if ("27.gif".equals(strIcon)) return R.drawable.a_27;
		if ("28.gif".equals(strIcon)) return R.drawable.a_28;
		if ("29.gif".equals(strIcon)) return R.drawable.a_29;
		if ("30.gif".equals(strIcon)) return R.drawable.a_30;
		if ("31.gif".equals(strIcon)) return R.drawable.a_31;
		return 0;
	}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

以上是“android如何使用soap協議訪問webservice實現天氣預報功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

万载县| 云林县| 辛集市| 桑植县| 金川县| 竹北市| 嘉禾县| 塔河县| 田林县| 普陀区| 沾益县| 射阳县| 海南省| 苏尼特左旗| 永济市| 唐河县| 石阡县| 施秉县| 富平县| 泉州市| 兴国县| 许昌市| 永胜县| 红河县| 雅安市| 鄂州市| 镇赉县| 望江县| 木里| 鹤山市| 安陆市| 庄河市| 阜新市| 凤山市| 栖霞市| 安远县| 柞水县| 鹰潭市| 富源县| 武夷山市| 景东|