Android开发项目:Android天气预报


这个项目是基于webservice的,用ksoap2来解析网络上的WebService的,我们先看做出的效果图

其实也没有很多技术难题,我们直接来看源码再做说明吧

Android天气预报源码下载

免费下载地址在 http://linux.bkjia.com/

用户名与密码都是www.bkjia.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. }  
  • 1
  • 2
  • 下一页

相关内容