博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
免费的天气Web Service接口
阅读量:5098 次
发布时间:2019-06-13

本文共 7360 字,大约阅读时间需要 24 分钟。

免费的天气Web Service接口

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

1.

 官网:

2.

网站: ,此网站提供各种webservice接口

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

转至:

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

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

MainActivity:

 

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             @Override24             public void onClick(View v) {25                 String weather = "";26                 int provinceCode = weatherutil.getProvinceCode("辽宁"); // 311927                 int cityCode = weatherutil.getCityCode(provinceCode, "大连"); // 97428                 List
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 @Override41 public boolean onCreateOptionsMenu(Menu menu) {42 getMenuInflater().inflate(R.menu.main, menu);43 return true;44 }45 46 }

 

获取天气的帮助类:

WeatherUtil.class:

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
getWeather(int cityCode) {101 List
weatherList = new ArrayList
();102 Document document;103 DocumentBuilderFactory documentBF = DocumentBuilderFactory104 .newInstance();105 documentBF.setNamespaceAware(true);106 try {107 DocumentBuilder documentB = documentBF.newDocumentBuilder();108 InputStream inputStream = getSoapInputStream(WEATHER_QUERY_URL109 + 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 }

 

 

源码下载:

 

 

转载于:https://www.cnblogs.com/liangstudyhome/p/3700420.html

你可能感兴趣的文章
什么时候使用引用?和什么时候使用指针
查看>>
layout layout_alignLeft跟layout_toLeftOf
查看>>
CSS: inline-block的应用和float块高度塌陷
查看>>
评价在使用的输入法
查看>>
iOS程序内实现版本更新
查看>>
微信小程序-存取本地缓存
查看>>
xsd 和 wsdl
查看>>
MySQL--MySQL分区
查看>>
box-shadow、drop-shadow 和 text-shadow
查看>>
重新学习python系列(四)? WTF?
查看>>
福大软工 · BETA 版冲刺前准备(团队)
查看>>
福大软工1816 · 第二次作业
查看>>
Django+Xadmin+Echarts动态获取数据legend颜色显示灰色问题已解决
查看>>
constraint the design
查看>>
jquery 实现页面局部刷新ajax做法
查看>>
潜移默化
查看>>
我自己遇到的一个随机无重复分配问题实例
查看>>
mysql 联合索引和唯一索引
查看>>
机器学习常用Python扩展包
查看>>
Python 高级图像处理
查看>>