[AS006] Android 天气预报(调用webservice)
先看效果:
原理:获取支持的省份->获取支持的城市->按城市编号调用webservice->返回23个string拼接展示
部分代码片段:
public static List<String> getCityListByProvince(String province) { String methodName = "getSupportCity"; HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); ht.debug = true; SoapObject soapObject = new SoapObject(SERVICE_NS, methodName); soapObject.addProperty("byProvinceName", province); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.bodyOut = soapObject; envelope.dotNet = true; try { ht.call(SERVICE_NS + methodName, envelope); if (envelope.getResponse() != null) { SoapObject result = (SoapObject) envelope.bodyIn; SoapObject detail = (SoapObject) result.getProperty(methodName + "Result"); return parseProvinceOrCity(detail); } } catch (Exception e) { e.printStackTrace(); } return null; } private static List<String> parseProvinceOrCity(SoapObject detail) { ArrayList<String> result = new ArrayList<String>(); for (int i = 0; i < detail.getPropertyCount(); i++) { result.add(detail.getProperty(i).toString().split(",")[0]); } return result; }
webservice地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
返回结构:
注:同一IP地址24小时内限制调用次数,大概是50次。(可以切换网络继续使用)