加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Webservices获取天气

发布时间:2020-12-17 00:21:08 所属栏目:安全 来源:网络整理
导读:// 定义Web Service的命名空间 static final String SERVICE_NS = "http://WebXml.com.cn/"; // 定义Web Service提供服务的URL static final String SERVICE_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx"; /** * 获取省的列表 * @re

// 定义Web Service的命名空间

static final String SERVICE_NS = "http://WebXml.com.cn/"; // 定义Web Service提供服务的URL static final String SERVICE_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx"; /** * 获取省的列表 * @return */ public static List<String> getProvinceList() { // 调用的方法 final String methodName = "getRegionProvince"; // 创建HttpTransportSE传输对象 final HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); ht.debug = true; // 使用SOAP1.1协议创建Envelop对象 final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // 实例化SoapObject对象 SoapObject soapObject = new SoapObject(SERVICE_NS,methodName); envelope.bodyOut = soapObject; // 设置与.Net提供的Web Service保持较好的兼容性 envelope.dotNet = true; FutureTask<List<String>> task = new FutureTask<List<String>>( new Callable<List<String>>(){ @Override public List<String> call()throws Exception{ // 调用Web Service ht.call(SERVICE_NS + methodName,envelope); if (envelope.getResponse() != null){ // 获取服务器响应返回的SOAP消息 SoapObject result = (SoapObject) envelope.bodyIn; SoapObject detail = (SoapObject) result.getProperty( methodName + "Result"); // 解析服务器响应的SOAP消息。 return parseProvinceOrCity(detail); } return null; } }); new Thread(task).start(); try{ return task.get(); } catch (Exception e){ e.printStackTrace(); } return null; } /** * 根据省获取市列表 * @param province * @return */ public static List<String> getCityListByProvince(String province) { // 调用的方法 final String methodName = "getSupportCityString"; // 创建HttpTransportSE传输对象 final HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); ht.debug = true; // 实例化SoapObject对象 SoapObject soapObject = new SoapObject(SERVICE_NS,methodName); // 添加一个请求参数 soapObject.addProperty("theRegionCode",province); // 使用SOAP1.1协议创建Envelop对象 final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.bodyOut = soapObject; // 设置与.Net提供的Web Service保持较好的兼容性 envelope.dotNet = true; FutureTask<List<String>> task = new FutureTask<List<String>>( new Callable<List<String>>(){ @Override public List<String> call()? throws Exception { // 调用Web Service ht.call(SERVICE_NS + methodName,envelope); if (envelope.getResponse() != null) { // 获取服务器响应返回的SOAP消息 SoapObject result = (SoapObject) envelope.bodyIn; SoapObject detail = (SoapObject) result.getProperty( methodName + "Result"); // 解析服务器响应的SOAP消息。 return parseProvinceOrCity(detail); } return null; } }); new Thread(task).start(); try { return task.get(); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 获取天气 * @param cityName * @return */ public static SoapObject getWeatherByCity(String cityName){ final String methodName = "getWeather"; final HttpTransportSE ht = new HttpTransportSE(SERVICE_URL); ht.debug = true; final SoapSerializationEnvelope envelope =? new SoapSerializationEnvelope(SoapEnvelope.VER11); SoapObject soapObject = new SoapObject(SERVICE_NS,methodName); soapObject.addProperty("theCityCode",cityName); envelope.bodyOut = soapObject; // 设置与.Net提供的Web Service保持较好的兼容性 envelope.dotNet = true; FutureTask<SoapObject> task = new FutureTask<SoapObject>( new Callable<SoapObject>(){ @Override public SoapObject call()throws Exception{ ht.call(SERVICE_NS + methodName,envelope); SoapObject result = (SoapObject) envelope.bodyIn; SoapObject detail = (SoapObject) result.getProperty( methodName + "Result"); return detail; } }); new Thread(task).start(); try{ return task.get(); } 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; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读