免费的天气Web Service接口

免费的天气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:


 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 }

获取天气的帮助类:

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<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 }

源码下载:源码

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

时间: 2024-10-05 22:03:17

免费的天气Web Service接口的相关文章

Axis实现 web service接口开发 + 客户端调用

看到网上挺多人找webservice axis开发案例,但是网上较多的都是有点乱,初学者不太容易看得懂,所以最近看到自己终于有了点空闲时间,就上传了一份比较简单的webservice axis的完整案例. 只适用于初学者. 一.新建一个web项目 导入lib包. 2.配置 web.xml <!-- axis 配置 -->   <servlet>         <display-name>Apache-Axis Servlet</display-name>

Axis2实现 web service接口开发 + 客户端调用

一. 新建一个web项目, 1.打开axis2.war包,将conf,lib,modules三个文件夹复制到项目的WEB-INF文件夹下,再在WEB-INF目录下新建一个services文件夹,然后在services文件下新建一个文件夹(任意取名): 再新建META-INF文件夹,最后再新增services.xml,接口信息就写在这里面. 具体路径:WEB-INF/services/myservice/META-INF/services.xml 2.配置 web.xml .加载axis2 和 a

Web Service (四) 手动发布Web Service接口-CXF与Spring集成

当我们发布完Web Service接口之后有两种方式可以调用Web service服务,一种是通过动态客户端方式,另一种是引用服务端的接口,引用服务端接口的方式对于客户端同服务器端耦合比较大,而使用WSDL的方式客户端不知道服务端的存在就可以调用服务器的方法. 下面是项目的结构图: 1.Web Service发布项目 2.编写服务端接口类以及实现类,如下,同上一篇自动发布接口,多了一个注解@WebService package com.test.webservice; import javax.

通过ajax访问Tomcat服务器web service接口时出现No &#39;Access-Control-Allow-Origin&#39; header问题的解决办法

问题描述 通过ajax访问Web服务器(Tomcat7.0.42)中的json web service接口的时候,报以下跨域问题: XMLHttpRequest cannot load http://localhost:8080/get-employees-by-name/name/admin. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhos

Web Service接口开发流程(转)

1.  设计数据库物理结构(可能体现为TABLE). 2.  设计数据库的逻辑结构(可能为VIEW OR PROCEDURE). 3.  对VIEW OR PROCEDURE 等数据库对象进行授权. 4.  对数据库对象授权文档收集.(保证以后移动数据库时快速对数据库用户进行授权) 5.  设计业务类库. 6.  把业务类库函数的文档写到接口系统数据库以存档.(由系统自动生成函数的唯一ID号) 7.  根据函数的唯一ID号设计封装成Web Service接口. 8.  把接口系统数据库已存档的文

java中调用kettle作业以及生成web service 接口

第一步:(前提将kett中lib下的所有jar包拷贝到java项目lib目录)创建并连接资源库,如果只用这一个工作空间,可以将此段代码放入静态代码块,代码如下: KettleEnvironment.init(); //创建资源库对象,此时的对象还是一个空对象 KettleDatabaseRepository repository = new KettleDatabaseRepository(); //创建资源库数据库对象,类似我们在spoon里面创建资源库 //(数据库连接名称,数据库类型,连接

php curl 访问web service接口

利用curl访问web service接口代码如下: $apiUrl = 'http://test.com/test'; $accessToken = '123456789'; $header = ['Authorization: ' . $accessToken,'Content-Type:application/json']; $post = ['sku'=>[]]; $jsonPost = json_encode($post); $ch = curl_init(); curl_setopt

使用JAX-RS进行Web Service接口开发

一.服务器端 1.创建web项目,项目名称为 WS_Server 2.创建包,并在该包下创建TestService类: package com.test.webservice; public class TestService { public static final String TITLE = "此消息由WebService服务器端返回: "; public String test(String msg){ return TITLE + msg; } } 3.将TestServi

web Service 接口对xml数据处理

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; using System.Xml; using IM.BLL; using IM.Model; using System.IO; using System.Text; using WebSite.Public.FlashUpload; namespace WebSite.Ap