免费的天气Web Service接口
免费的天气Web Service接口
在android应用当中很多时候需要获取天气的信息,这里提供怎么获取天气信息:
1. http://www.ayandy.com/Service.asmx?wsdl
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:
- public class MainActivity extends Activity {
- Button btn = null;
- TextView text = null;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- initView();
- }
- private void initView() {
- final WeatherUtil weatherutil = new WeatherUtil();
- btn = (Button) findViewById(R.id.btn);
- text = (TextView) findViewById(R.id.weatherInfo);
- btn.setOnClickListener(new Button.OnClickListener() {
- @Override
- public void onClick(View v) {
- String weather = "";
- int provinceCode = weatherutil.getProvinceCode("辽宁"); //
- int cityCode = weatherutil.getCityCode(provinceCode, "大连"); //
- List<String> weatherList = weatherutil.getWeather(cityCode);
- for (String str : weatherList) {
- weather = weather + str;
- }
- text.setText(weather);
- }
- });
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- getMenuInflater().inflate(R.menu.main, menu);
- return true;
- }
- }
获取天气的帮助类:
WeatherUtil.class:
- 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=";
- public WeatherUtil() {
- }
- public static int getProvinceCode(String provinceName) {
- Document document;
- DocumentBuilderFactory documentBF = DocumentBuilderFactory
- .newInstance();
- documentBF.setNamespaceAware(true);
- int provinceCode = 0;
- try {
- DocumentBuilder documentB = documentBF.newDocumentBuilder();
- InputStream inputStream = getSoapInputStream(PROVINCE_CODE_URL); // 具体webService相关
- document = documentB.parse(inputStream);
- NodeList nodeList = document.getElementsByTagName("string"); // 具体webService相关
- int len = nodeList.getLength();
- for (int i = 0; i < len; i++) {
- Node n = nodeList.item(i);
- String result = n.getFirstChild().getNodeValue();
- String[] address = result.split(",");
- String pName = address[0];
- String pCode = address[1];
- if (pName.equalsIgnoreCase(provinceName)) {
- provinceCode = Integer.parseInt(pCode);
- }
- }
- inputStream.close();
- } catch (DOMException e) {
- e.printStackTrace();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return provinceCode;
- }
- public static int getCityCode(int provinceCode, String cityName) {
- Document doc;
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- dbf.setNamespaceAware(true);
- int cityCode = 0;
- try {
- DocumentBuilder db = dbf.newDocumentBuilder();
- InputStream is = getSoapInputStream(CITY_CODE_URL + provinceCode); // 具体webService相关
- doc = db.parse(is);
- NodeList nl = doc.getElementsByTagName("string"); // 具体webService相关
- int len = nl.getLength();
- for (int i = 0; i < len; i++) {
- Node n = nl.item(i);
- String result = n.getFirstChild().getNodeValue();
- String[] address = result.split(",");
- String cName = address[0];
- String cCode = address[1];
- if (cName.equalsIgnoreCase(cityName)) {
- cityCode = Integer.parseInt(cCode);
- }
- }
- is.close();
- } catch (DOMException e) {
- e.printStackTrace();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return cityCode;
- }
- 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;
- }
- public static List<String> getWeather(int cityCode) {
- List<String> weatherList = new ArrayList<String>();
- Document document;
- DocumentBuilderFactory documentBF = DocumentBuilderFactory
- .newInstance();
- documentBF.setNamespaceAware(true);
- try {
- DocumentBuilder documentB = documentBF.newDocumentBuilder();
- InputStream inputStream = getSoapInputStream(WEATHER_QUERY_URL
- + cityCode);
- document = documentB.parse(inputStream);
- NodeList nl = document.getElementsByTagName("string");
- int len = nl.getLength();
- for (int i = 0; i < len; i++) {
- Node n = nl.item(i);
- String weather = n.getFirstChild().getNodeValue();
- System.out.println(i + "----->>>>" + weather);
- weatherList.add(weather);
- }
- inputStream.close();
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- } catch (DOMException e) {
- e.printStackTrace();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return weatherList;
- }
- }
源码下载:源码
免费的天气Web Service接口的更多相关文章
- 通过ajax访问Tomcat服务器web service接口时出现No 'Access-Control-Allow-Origin' header问题的解决办法
问题描述 通过ajax访问Web服务器(Tomcat7.0.42)中的json web service接口的时候,报以下跨域问题: XMLHttpRequest cannot load http:// ...
- 使用wsimport和JAX-WS调用Web Service接口
本文简单举例说明如何使用wsimport工具和JAX-WS API调用Web Service接口.此方法的优点:使用JDK自带的工具和API接口,无需依赖第三方库. JDK版本:1.8.0_141开发 ...
- 统计随机数及临界值Web Service接口
(2017-02-04 银河统计) 统计函数API概念 API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发 ...
- 在网页中运用统计Web Service接口
(2017-02-10 银河统计) 在"统计随机数及临界值Web Service接口"一文中介绍了常用统计分布四类Web Service接口(随机数.分位数.密度函数和累积分布函数 ...
- 使用JDK自带功能,实现一个简单的Web Service接口发布
万事开头难,本篇文章的目的就是使用JDK自带的功能,实现一个最简单的Web Service接口的发布. 下图是项目的组成,主要有三个部分,一个接口(WS),一个接口的实现类(WSImp),还有一个接口 ...
- 建立Web Service 接口及调用
WEB SERVICE 接口: [WebMethod] public string MaterialRequest(string jsonText) { string WorkNo; string P ...
- Web Service接口返回泛型的问题(System.InvalidCastException: 无法将类型为“System.Collections.Generic.List`1[System.String]”的对象强制转换为类型“System.String[]”)
在使用C#写Web Service时遇到了个很奇怪的问题.返回值的类型是泛型(我用的是类似List<string>)的接口,测试时发现总是报什么无法转换为对象的错误,百思不得其解. 后来在 ...
- 免费的天气API测试接口
网上几乎所有的天气接口都需要注册key,然后还各种频率限制,每天调用次数才几百次? 太坑爹了吧 一个简单的天气预报功能, 为什么要搞的这么复杂, 收什么费? 推荐一个真正免费的天气API接口, 返回j ...
- web service接口 wsdl和asmx有什么区别
没有区别,只是后缀名的区别.Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立 ...
随机推荐
- (六)6.17 Neurons Networks convolutional neural network(cnn)
之前所讲的图像处理都是小 patchs ,比如28*28或者36*36之类,考虑如下情形,对于一副1000*1000的图像,即106,当隐层也有106节点时,那么W(1)的数量将达到1012级别,为了 ...
- JS面向对象组件(五) -- 复制对象(拷贝继承)
研究到这儿,竟然出现了一个面试题目 var a = { name : '小明' }; var b = a; b.name = '小强'; alert( a.name ); 结果必然是“小强”,原因是对 ...
- 字符串string
1.字符串获取类.封装检测数字的方法 var str = '前端开发'; //alert(str.length); //alert(str.charAt()); //没有参数 取得索引是0 结果是:前 ...
- is_file和file_exists效率比较
目前在弄文件缓存的时候用到了判定文件存在与否,is_file()还是file_exists()呢?is_file和file_exists两者效率比较起来,谁的运行速度更快呢?还是做个测试吧: 1 2 ...
- PHP中基本符号及使用方法
注解符号:这个#还真很少用,能和shell通用还真不错呢. //, # 单行注解多行注解 引号的使用 ' ' 单引号,没有任何意义,不经任何处理直接拿过来;" "双引号,php动 ...
- CURL: CURLE_COULDNT_CONNECT问题探究
摘自:: 存储系统研究: socket connect error 99(Cannot assign request address) 这是最近使用libcurl写http服务的压力测试的时候遇到的 ...
- core文件分析
http://baidutech.blog.51cto.com/4114344/904419/ http://www.newsmth.net/pc/pccon.php?id=10001977& ...
- myeclipse 10 优化
一.Myeclipse10修改字体 MyEclipse10是基于Eclipse3.7内核,但在Eclipse的Preferences-〉general-〉 Appearance->Colors ...
- ArcGIS 开发的一些知识学习点
由于文章太多,不便转载,现主要列举如下: ArcGIS Runtime支持的GP工具列表 ArcGIS Runtime支持的GP工具列表 目录(?)[-] Standard版本Standard 空间分 ...
- 自定义View绘制字符串
import android.app.Activity; import android.os.Bundle; import android.view.Display; import android.v ...