免费的天气Web Service接口

时间:2014-07-22 23:08:14   收藏:0   阅读:402

免费的天气Web Service接口

在android应用当中很多时候需要获取天气的信息,这里提供怎么获取天气信息:

1. http://www.ayandy.com/Service.asmx?wsdl

 官网:http://www.ayandy.com

2. http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

网站:http://www.webxml.com.cn/zh_cn/index.aspx ,此网站提供各种webservice接口

3.更多WS接口(天气预报,IP地址搜索,火车时刻表,汇率等等)

转至:http://developer.51cto.com/art/200908/147125.htm

在用网上的Web Service的接口的时候都要引入一个jar包:  下载地址

4.用android 的一个例子来获取天气数据:                         程序一定要注意是否打开了联网的权限

MainActivity:

 

mamicode.com,码迷
 1 public class MainActivity extends Activity {
 2 
 3     Button btn = null;
 4 
 5     TextView text = null;
 6 
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11 
12         initView();
13 
14     }
15 
16     private void initView() {
17         final WeatherUtil weatherutil = new WeatherUtil();
18 
19         btn = (Button) findViewById(R.id.btn);
20         text = (TextView) findViewById(R.id.weatherInfo);
21         btn.setOnClickListener(new Button.OnClickListener() {
22 
23             @Override
24             public void onClick(View v) {
25                 String weather = "";
26                 int provinceCode = weatherutil.getProvinceCode("辽宁"); // 3119
27                 int cityCode = weatherutil.getCityCode(provinceCode, "大连"); // 974
28                 List<String> weatherList = weatherutil.getWeather(cityCode);
29                 for (String str : weatherList) {
30 
31                     weather = weather + str;
32                 }
33 
34                 text.setText(weather);
35 
36             }
37         });
38     }
39 
40     @Override
41     public boolean onCreateOptionsMenu(Menu menu) {
42         getMenuInflater().inflate(R.menu.main, menu);
43         return true;
44     }
45 
46 }
mamicode.com,码迷

 

获取天气的帮助类:

WeatherUtil.class:

mamicode.com,码迷
  1 public class WeatherUtil {
  2 
  3     private static String SERVICES_HOST = "www.webxml.com.cn";
  4     private static String WEATHER_SERVICES_URL = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx/";
  5     private static String PROVINCE_CODE_URL = WEATHER_SERVICES_URL
  6             + "getRegionProvince";
  7     private static String CITY_CODE_URL = WEATHER_SERVICES_URL
  8             + "getSupportCityString?theRegionCode=";
  9     private static String WEATHER_QUERY_URL = WEATHER_SERVICES_URL
 10             + "getWeather?theUserID=&theCityCode=";
 11 
 12     public WeatherUtil() {
 13     }
 14 
 15     public static int getProvinceCode(String provinceName) {
 16         Document document;
 17         DocumentBuilderFactory documentBF = DocumentBuilderFactory
 18                 .newInstance();
 19         documentBF.setNamespaceAware(true);
 20         int provinceCode = 0;
 21         try {
 22             DocumentBuilder documentB = documentBF.newDocumentBuilder();
 23             InputStream inputStream = getSoapInputStream(PROVINCE_CODE_URL); // 具体webService相关
 24             document = documentB.parse(inputStream);
 25             NodeList nodeList = document.getElementsByTagName("string"); // 具体webService相关
 26             int len = nodeList.getLength();
 27             for (int i = 0; i < len; i++) {
 28                 Node n = nodeList.item(i);
 29                 String result = n.getFirstChild().getNodeValue();
 30                 String[] address = result.split(",");
 31                 String pName = address[0];
 32                 String pCode = address[1];
 33                 if (pName.equalsIgnoreCase(provinceName)) {
 34                     provinceCode = Integer.parseInt(pCode);
 35                 }
 36             }
 37             inputStream.close();
 38         } catch (DOMException e) {
 39             e.printStackTrace();
 40         } catch (ParserConfigurationException e) {
 41             e.printStackTrace();
 42         } catch (SAXException e) {
 43             e.printStackTrace();
 44         } catch (IOException e) {
 45             e.printStackTrace();
 46         }
 47         return provinceCode;
 48     }
 49 
 50     public static int getCityCode(int provinceCode, String cityName) {
 51         Document doc;
 52         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 53         dbf.setNamespaceAware(true);
 54         int cityCode = 0;
 55         try {
 56             DocumentBuilder db = dbf.newDocumentBuilder();
 57             InputStream is = getSoapInputStream(CITY_CODE_URL + provinceCode); // 具体webService相关
 58             doc = db.parse(is);
 59             NodeList nl = doc.getElementsByTagName("string"); // 具体webService相关
 60             int len = nl.getLength();
 61             for (int i = 0; i < len; i++) {
 62                 Node n = nl.item(i);
 63                 String result = n.getFirstChild().getNodeValue();
 64                 String[] address = result.split(",");
 65                 String cName = address[0];
 66                 String cCode = address[1];
 67                 if (cName.equalsIgnoreCase(cityName)) {
 68                     cityCode = Integer.parseInt(cCode);
 69                 }
 70             }
 71             is.close();
 72         } catch (DOMException e) {
 73             e.printStackTrace();
 74         } catch (ParserConfigurationException e) {
 75             e.printStackTrace();
 76         } catch (SAXException e) {
 77             e.printStackTrace();
 78         } catch (IOException e) {
 79             e.printStackTrace();
 80         }
 81         return cityCode;
 82     }
 83 
 84     public static InputStream getSoapInputStream(String url) {
 85         InputStream inputStream = null;
 86         try {
 87             URL urlObj = new URL(url);
 88             URLConnection urlConn = urlObj.openConnection();
 89             urlConn.setRequestProperty("Host", SERVICES_HOST); // 具体webService相关
 90             urlConn.connect();
 91             inputStream = urlConn.getInputStream();
 92         } catch (MalformedURLException e) {
 93             e.printStackTrace();
 94         } catch (IOException e) {
 95             e.printStackTrace();
 96         }
 97         return inputStream;
 98     }
 99 
100     public static List<String> getWeather(int cityCode) {
101         List<String> weatherList = new ArrayList<String>();
102         Document document;
103         DocumentBuilderFactory documentBF = DocumentBuilderFactory
104                 .newInstance();
105         documentBF.setNamespaceAware(true);
106         try {
107             DocumentBuilder documentB = documentBF.newDocumentBuilder();
108             InputStream inputStream = getSoapInputStream(WEATHER_QUERY_URL
109                     + cityCode);
110             document = documentB.parse(inputStream);
111             NodeList nl = document.getElementsByTagName("string");
112             int len = nl.getLength();
113             for (int i = 0; i < len; i++) {
114                 Node n = nl.item(i);
115                 String weather = n.getFirstChild().getNodeValue();
116                 System.out.println(i + "----->>>>" + weather);
117 
118                 weatherList.add(weather);
119             }
120             inputStream.close();
121         } catch (UnsupportedEncodingException e) {
122             e.printStackTrace();
123         } catch (DOMException e) {
124             e.printStackTrace();
125         } catch (ParserConfigurationException e) {
126             e.printStackTrace();
127         } catch (SAXException e) {
128             e.printStackTrace();
129         } catch (IOException e) {
130             e.printStackTrace();
131         }
132         return weatherList;
133     }
134 
135 }
mamicode.com,码迷

 

 

源码下载:源码

 

 

免费的天气Web Service接口,码迷,mamicode.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!