歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android開發項目:Android天氣預報

Android開發項目:Android天氣預報

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