Web Service 调用天气预报
webservice 资源
免费 webservice 接口,包含天气预报、国内手机号码归属地查询WEB服务等多种服务
http://www.webxml.com.cn/zh_cn/web_services.aspx
本次项目使用天气预报的接口
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
创建 java 工程,将天气预报 wsdl 生成客户端代码,具体参考: Web Service 入门
生成代码问题解决
直接使用 wsdl 调用生成代码会报错,无法生成。
修改 wsdl 文件里面的一个内容
<s:element ref=”s:schema”/>
<s:any/>
替换为
<s:any minOccurs=”2” maxOccurs=”2”/>
注意要全部替换
调用天气预报接口
成功生成代码之后,参考接口文档,编写客户端调用
客户端调用代码1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46public class TestWeather {
public static void main(String[] args) {
WeatherWS ws = new WeatherWS();
WeatherWSSoap soap = ws.getWeatherWSSoap();
/**
* 获得天气预报数据
* 输入参数:城市/地区ID或名称
* 返回数据:一维字符串数组
*/
ArrayOfString weather = soap.getWeather("广州", null);
List<String> list = weather.getString();
System.out.println("天气预报数据:\n"+list);
System.out.println();
/**
* 获得国外国家名称和与之对应的ID
* 输入参数:无,
* 返回数据:一维字符串数组
*/
ArrayOfString country = soap.getRegionCountry();
List<String> list2 = country.getString();
System.out.println("国家名称对应数据:\n"+list2);
System.out.println();
/**
* 获得中国省份、直辖市、地区和与之对应的ID
* 输入参数:无
* 返回数据:一维字符串数组
*/
ArrayOfString province = soap.getRegionProvince();
List<String> list3 = province.getString();
System.out.println("省份地区对应数据:\n"+list3);
System.out.println();
/**
* 获得支持的城市/地区名称和与之对应的ID
* 输入参数:theRegionCode = 省市、国家ID或名称
* 返回数据:一维字符串数组
*/
ArrayOfString cityString = soap.getSupportCityString("广东");
List<String> list4 = cityString.getString();
System.out.println("支持的城市/地区名称对应数据:\n"+list4);
System.out.println();
}
}
输出结果如下图