歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android開發項目:Android天氣預報

這個項目是基於webservice的,用ksoap2來解析網絡上的WebService的,我們先看做出的效果圖

其實也沒有很多技術難題,我們直接來看源碼再做說明吧

Android天氣預報源碼下載

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/2月/13日/Android開發教程:Android天氣預報/

[java]

  1. import java.util.ArrayList;  
  2. import java.util.List;  
  3.   
  4. import org.ksoap2.SoapEnvelope;  
  5. import org.ksoap2.serialization.SoapObject;  
  6. import org.ksoap2.serialization.SoapSerializationEnvelope;  
  7. import org.ksoap2.transport.HttpTransportSE;  
  8.   
  9. public class WebServiceUtil  
  10. {  
  11.     // 定義Web Service的命名空間   
  12.     static final String SERVICE_NS = "http://WebXml.com.cn/";  
  13.     // 定義Web Service提供服務的URL   
  14.     static final String SERVICE_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx";  
  15.   
  16.     /** 
  17.      * 獲得州,國內外省份和城市信息 
  18.      *  
  19.      * @return 
  20.      */  
  21.     public static List<String> getProvinceList()  
  22.     {  
  23.   
  24.         // 需要調用的方法名(獲得本天氣預報Web Services支持的洲、國內外省份和城市信息)   
  25.         String methodName = "getRegionProvince";  
  26.         // 創建HttpTransportSE傳輸對象   
  27.         HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);  
  28.   
  29.         httpTranstation.debug = true;  
  30.         // 使用SOAP1.1協議創建Envelop對象   
  31.         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(  
  32.                 SoapEnvelope.VER11);  
  33.         // 實例化SoapObject對象   
  34.         SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);  
  35.         envelope.bodyOut = soapObject;  
  36.         // 設置與.Net提供的Web Service保持較好的兼容性   
  37.         envelope.dotNet = true;  
  38.         try  
  39.         {  
  40.             // 調用Web Service   
  41.             httpTranstation.call(SERVICE_NS + methodName, envelope);  
  42.             if (envelope.getResponse() != null)  
  43.             {  
  44.                 // 獲取服務器響應返回的SOAP消息   
  45.                 SoapObject result = (SoapObject) envelope.bodyIn;  
  46.                 SoapObject detail = (SoapObject) result.getProperty(methodName  
  47.                         + "Result");  
  48.                 // 解析服務器響應的SOAP消息。   
  49.                 return parseProvinceOrCity(detail);  
  50.             }  
  51.         } catch (Exception e)  
  52.         {  
  53.             e.printStackTrace();  
  54.         }  
  55.   
  56.         return null;  
  57.     }  
  58.   
  59.     /** 
  60.      * 根據省份獲取城市列表 
  61.      *  
  62.      * @param province 
  63.      * @return 
  64.      */  
  65.     public static List<String> getCityListByProvince(String province)  
  66.     {  
  67.   
  68.         // 需要調用的方法名(獲得本天氣預報Web Services支持的城市信息,根據省份查詢城市集合:帶參數)   
  69.         String methodName = "getSupportCityString";  
  70.           
  71.         HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);  
  72.         httpTranstation.debug = true;  
  73.           
  74.         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(  
  75.                 SoapEnvelope.VER11);  
  76.   
  77.         SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);  
  78.         soapObject.addProperty("theRegionCode", province);  
  79.         envelope.bodyOut = soapObject;  
  80.         envelope.dotNet = true;  
  81.         try  
  82.         {  
  83.             // 調用Web Service   
  84.             httpTranstation.call(SERVICE_NS + methodName, envelope);  
  85.             if (envelope.getResponse() != null)  
  86.             {  
  87.                 // 獲取服務器響應返回的SOAP消息   
  88.                 SoapObject result = (SoapObject) envelope.bodyIn;  
  89.                 SoapObject detail = (SoapObject) result.getProperty(methodName  
  90.                         + "Result");  
  91.                 // 解析服務器響應的SOAP消息。   
  92.                 return parseProvinceOrCity(detail);  
  93.             }  
  94.         } catch (Exception e)  
  95.         {  
  96.             e.printStackTrace();  
  97.         }  
  98.   
  99.         return null;  
  100.   
  101.     }  
  102.   
  103.     private static List<String> parseProvinceOrCity(SoapObject detail)  
  104.     {  
  105.         ArrayList<String> result = new ArrayList<String>();  
  106.         for (int i = 0; i < detail.getPropertyCount(); i++)  
  107.         {  
  108.             String str = detail.getProperty(i).toString();  
  109.             // 解析出每個省份   
  110.             result.add(str.split(",")[0]);  
  111.         }  
  112.         return result;  
  113.     }  
  114.   
  115.     public static SoapObject getWeatherByCity(String cityName)  
  116.     {  
  117.   
  118.         // 根據城市或地區名稱查詢獲得未來三天內天氣情況、現在的天氣實況、天氣和生活指數   
  119.         String methodName = "getWeather";  
  120.           
  121.         HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);  
  122.         httpTranstation.debug = true;  
  123.           
  124.         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(  
  125.                 SoapEnvelope.VER11);  
  126.         SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);  
  127.         soapObject.addProperty("theCityCode", cityName);  
  128.         envelope.bodyOut = soapObject;  
  129.         envelope.dotNet = true;  
  130.           
  131.         try  
  132.         {  
  133.             // 調用Web Service   
  134.             httpTranstation.call(SERVICE_NS + methodName, envelope);  
  135.             if (envelope.getResponse() != null)  
  136.             {  
  137.                 // 獲取服務器響應返回的SOAP消息   
  138.                 SoapObject result = (SoapObject) envelope.bodyIn;  
  139.                 SoapObject detail = (SoapObject) result.getProperty(methodName  
  140.                         + "Result");  
  141.                 // 解析服務器響應的SOAP消息。   
  142.                 return detail;  
  143.             }  
  144.         } catch (Exception e)  
  145.         {  
  146.             e.printStackTrace();  
  147.         }  
  148.   
  149.         return null;  
  150.     }  
  151.   
  152. }  
Copyright © Linux教程網 All Rights Reserved