• Android webService訪問實例

    2
    Android Java XML C/C++ 20366 次瀏覽
    參考網上的例子實現一個簡單的天氣查看功能。 界面包含一個按鈕,當點擊按鈕時 已tips 提示框的方式展現天氣信息。
    package com.lht.WebService;
    
    import java.io.UnsupportedEncodingException;
    
    import android.app.Activity;
    import android.os.Bundle;
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.AndroidHttpTransport;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class WebService extends Activity {
    	private static final String NAMESPACE = "http://WebXml.com.cn/";
    	// WebService地址
    	private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
    	private static final String METHOD_NAME = "getWeatherbyCityName";
    	private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";
    
    	private String weatherToday;
    
    	private Button okButton;
    	private SoapObject detail;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		okButton = (Button) findViewById(R.id.ok);
    
    		okButton.setOnClickListener(new Button.OnClickListener() {
    			public void onClick(View v) {
    				showWeather();
    			}
    		});
    	}
    
    	private void showWeather() {
    		String city = "西安";
    		getWeather(city);
    	}
    
    	@SuppressWarnings("deprecation")
    	public void getWeather(String cityName) {
    		try {
    			System.out.println("rpc------");
    			SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
    			System.out.println("rpc" + rpc);
    			System.out.println("cityName is " + cityName);
    			rpc.addProperty("theCityName", cityName);
    
    			AndroidHttpTransport ht = new AndroidHttpTransport(URL);
    			ht.debug = true;
    
    			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
    					SoapEnvelope.VER11);
    
    			envelope.bodyOut = rpc;
    			envelope.dotNet = true;
    			envelope.setOutputSoapObject(rpc);
    
    			ht.call(SOAP_ACTION, envelope);
    
    			SoapObject result = (SoapObject) envelope.bodyIn;
    			detail = (SoapObject) result
    					.getProperty("getWeatherbyCityNameResult");
    
    			System.out.println("result" + result);
    			System.out.println("detail" + detail);
    			Toast.makeText(WebService.this, detail.toString(),
    					Toast.LENGTH_LONG).show();
    			parseWeather(detail);
    
    			return;
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	private void parseWeather(SoapObject detail)
    			throws UnsupportedEncodingException {
    		String date = detail.getProperty(6).toString();
    		weatherToday = "今天:" + date.split(" ")[0];
    		weatherToday = weatherToday + "\n天氣:" + date.split(" ")[1];
    		weatherToday = weatherToday + "\n氣溫:"
    				+ detail.getProperty(5).toString();
    		weatherToday = weatherToday + "\n風力:"
    				+ detail.getProperty(7).toString() + "\n";
    		System.out.println("weatherToday is " + weatherToday);
    		Toast.makeText(WebService.this, weatherToday, Toast.LENGTH_LONG).show();
    
    	}
    }

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色