package com.hyrt.cei.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; public class WeatherUtil { private static String SERVICES_HOST = "www.webxml.com.cn"; private static String WEATHER_SERVICES_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/"; private static String PROVINCE_CODE_URL = WEATHER_SERVICES_URL + "getRegionProvince"; private static String CITY_CODE_URL = WEATHER_SERVICES_URL + "getSupportCityString?theRegionCode="; private static String WEATHER_QUERY_URL = WEATHER_SERVICES_URL + "getWeather?theUserID=&theCityCode="; private WeatherUtil() { } public static void main(String[] args) throws Exception { //getProvinceCodes(); //System.out.println(getCityCodes("311101")); //System.out.println(getWeather("1601")); } /** * 查询中国的省份码集合 * @return */ public static String getProvinceCodes() { StringBuilder sb = new StringBuilder(); InputStream inputStream = null; BufferedReader in = null; try { inputStream = getSoapInputStream(PROVINCE_CODE_URL); in = new BufferedReader(new InputStreamReader(inputStream,"UTF8")); while(true){ String lineStr = in.readLine(); if(lineStr == null) return sb.toString(); sb.append(lineStr + "\n"); } } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } /** * 查询某个省份下的城市码集合 * @param provinceCode 省份码 * @return */ public static String getCityCodes(String provinceCode) { StringBuilder sb = new StringBuilder(); InputStream inputStream = null; BufferedReader in = null; try { inputStream = getSoapInputStream(CITY_CODE_URL + provinceCode); in = new BufferedReader(new InputStreamReader(inputStream,"UTF8")); while(true){ String lineStr = in.readLine(); if(lineStr == null) return sb.toString(); sb.append(lineStr); } } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } public static InputStream getSoapInputStream(String url) { InputStream inputStream = null; try { URL urlObj = new URL(url); URLConnection urlConn = urlObj.openConnection(); urlConn.setRequestProperty("Host", SERVICES_HOST); // 具体webService相关 urlConn.connect(); inputStream = urlConn.getInputStream(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return inputStream; } /** * 查询天气情况 * @param cityCode 城市代码 * @return */ public static String getWeather(String cityCode) { StringBuilder sb = new StringBuilder(); InputStream inputStream = null; BufferedReader in = null; try { inputStream = getSoapInputStream(WEATHER_QUERY_URL + cityCode); in = new BufferedReader(new InputStreamReader(inputStream,"UTF8")); while(true){ String lineStr = in.readLine(); if(lineStr == null) return sb.toString(); sb.append(lineStr); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } }