天气预报工具类

来源:互联网 发布:淘宝上有个模特叫什么 编辑:程序博客网 时间:2024/06/03 23:39
package com.example.weather;import java.util.ArrayList;import java.util.List;import org.ksoap2.SoapEnvelope;import org.ksoap2.serialization.SoapObject;import org.ksoap2.serialization.SoapSerializationEnvelope;import org.ksoap2.transport.HttpTransportSE;import android.util.Log;public class WeatherWebServiceUtil {// 定义Web Service的命名空间       final static String SERVICE_NS = "http://WebXml.com.cn/";      // 定义Web Service提供服务的URL       final static String SERVICE_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx";      /**     * 获取省份地区     * @return     */public static List<String> getProvinceList(){List<String> provinceList = null;// 需要调用的方法名(获得本天气预报Web Services支持的洲、国内外省份和城市信息)           String methodName = "getRegionProvince";          // 创建HttpTransportSE传输对象           HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);                httpTranstation.debug = true;          // 使用SOAP1.1协议创建Envelop对象           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);          // 实例化SoapObject对象           SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);                 envelope.bodyOut = soapObject;          // 设置与.Net提供的Web Service保持较好的兼容性           envelope.dotNet = true;          try{              // 调用Web Service               httpTranstation.call(SERVICE_NS + methodName, envelope);              if (envelope.getResponse() != null){                  // 获取服务器响应返回的SOAP消息                   SoapObject result = (SoapObject) envelope.bodyIn;                  SoapObject detail = (SoapObject) result.getProperty(methodName + "Result");                  provinceList = parseProvinceOrCity(detail);            }          }catch (Exception e){              e.printStackTrace();          }  return provinceList;}/** * 根据地区或省份获取城市 * @param province * @return */public static List<String> getCityListByProvince(String province){List<String> cityList = null;        String methodName = "getSupportCityString";          // 创建HttpTransportSE传输对象           HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);                httpTranstation.debug = true;          // 使用SOAP1.1协议创建Envelop对象           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);         // 实例化SoapObject对象           SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);          soapObject.addProperty("theRegionCode", province);        envelope.bodyOut = soapObject;          // 设置与.Net提供的Web Service保持较好的兼容性           envelope.dotNet = true;          try{              // 调用Web Service               httpTranstation.call(SERVICE_NS + methodName, envelope);              if (envelope.getResponse() != null){                  // 获取服务器响应返回的SOAP消息                   SoapObject result = (SoapObject) envelope.bodyIn;                  SoapObject detail = (SoapObject) result.getProperty(methodName + "Result");                  cityList = parseProvinceOrCity(detail);            }          }catch (Exception e){              e.printStackTrace();          } return cityList;}/** * 根据城市获取5天的天气预报信息 * @param city * @return */public static SoapObject getWeatherByCity(String city){String methodName = "getWeather";          // 创建HttpTransportSE传输对象           HttpTransportSE httpTranstation = new HttpTransportSE(SERVICE_URL);                httpTranstation.debug = true;          // 使用SOAP1.1协议创建Envelop对象           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);         // 实例化SoapObject对象           SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);          soapObject.addProperty("theCityCode", city);        envelope.bodyOut = soapObject;          // 设置与.Net提供的Web Service保持较好的兼容性           envelope.dotNet = true;         try{              // 调用Web Service               httpTranstation.call(SERVICE_NS + methodName, envelope);              if (envelope.getResponse() != null){                  // 获取服务器响应返回的SOAP消息                   SoapObject result = (SoapObject) envelope.bodyIn;                  SoapObject detail = (SoapObject) result.getProperty(methodName + "Result");                  return detail;            }          }catch (Exception e){              e.printStackTrace();          }         return null;}/** * 解析SoapObject * @param detail * @return */public static List<String> parseProvinceOrCity(SoapObject detail){          ArrayList<String> result = new ArrayList<String>();          for (int i = 0; i < detail.getPropertyCount(); i++){              String str = detail.getProperty(i).toString();              result.add(str.split(",")[0]);          }          return result;  }  }

0 0
原创粉丝点击