Java调用第三方webService服务

什么是WebService

Web service是一个平*立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

网上有很多webSerivce服务,我们可以应用到我们的项目开发中。常用免费的web服务地址:

https://www.tuicool.com/articles/iIfqma

 

调用web service获取天气预报信息

1、访问第三方服务地址

这里提供接口的API,并且可以对接口进行测试

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

Java调用第三方webService服务

 

2、点击服务说明或者直接访问地址

http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL

Java调用第三方webService服务

 

3、用客户端访问webservice

首先新建一个项目

Java调用第三方webService服务

打开命令行窗口,切换到项目的src目录,执行"wsimport -keep http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl"生成客户端代码

Java调用第三方webService服务

这里会报错

Java调用第三方webService服务

因为这个WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:

将对应的wsdl文档保存到本地,保存为wsdl

Java调用第三方webService服务

Java调用第三方webService服务

修改wsdl文档的部分内容: <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>

再次执行wsimport生成代码,这次使用保存在本地的WeatherWS.wsdl文件来进行生成:

Java调用第三方webService服务

刷新项目

Java调用第三方webService服务

 

4、编写测试类

public class WeatherWebClient {
	public static void main(String[] args) {
		
		WeatherWebService factory = new WeatherWebService();
		WeatherWebServiceSoap weatherWebServiceSoap = factory.getWeatherWebServiceSoap();
		
		//查询城市天气预报
		ArrayOfString result = weatherWebServiceSoap.getWeatherbyCityName("澳门");
		List<String> list = result.getString();
		for (String string : list) {
			System.out.println(string);
		}
		
		System.out.println("-----------------------");
		
		//查询支持的省份
                ArrayOfString weatherInfo = weatherWebServiceSoap.getSupportProvince();
                List<String> lstWeatherInfo = weatherInfo.getString();
                for (String string : lstWeatherInfo) {
                    System.out.println(string);
                }
        
                System.out.println("-----------------------");
        
                //根据省份名称查询支持的城市
                ArrayOfString cityInfo = weatherWebServiceSoap.getSupportCity("江苏");
                List<String> lstCityInfo = cityInfo.getString();
                for (String string : lstCityInfo) {
                    System.out.println(string);
                }
	}
}

 

5、运行结果

特别行政区
澳门
45011
45011.jpg
2019/5/14 15:01:40
24℃/30℃
5月14日 多云
无持续风向小于3级
1.gif
1.gif
今日天气实况:气温:30℃;风向/风力:南风 2级;湿度:73%;紫外线强度:中等。空气质量:中。
紫外线指数:中等,涂擦SPF大于15、PA+防晒护肤品。
健臻·血糖指数:易波动,血糖易波动,注意监测。
穿衣指数:热,适合穿T恤、短薄外套等夏季服装。
洗车指数:较适宜,无雨且风力较小,易保持清洁度。
空气污染指数:中,易感人群应适当减少室外活动。

25℃/30℃
5月15日 阴
南风3-4级转无持续风向小于3级
2.gif
2.gif
26℃/30℃
5月16日 阴
西南风4-5级转3-4级
2.gif
2.gif
澳门位于我国大陆东南部沿海,正当珠江口西岸。其经纬度位置为:北纬22度11分,东经113度32分。澳门东面与香港隔海相望,成犄角之势,共扼珠江口的咽喉。西面与广东省珠海市的湾仔一衣带水,其间的濠江水道只有1000多米宽。南面过内、外十字门后便是浩瀚的南海。北边以古老的砂堤与珠海市的拱北相连,路界长度只有240米。澳门地区由澳门半岛和两个海岛(凼仔岛与路环岛)组成。多年来,由于不断填海造地,澳门的陆地面积逐渐扩大。澳门在东亚的位置也很适中。澳门东北离东京大约2800公里,西南距新加坡2600公里,东南至马尼拉1200公里,位居东南亚与东北亚航路的中继站,这样的一个地理位置,不难看出澳门在十六七世纪东西方贸易中的重要地位。澳门地处北回归线以南,受海洋和季风影响很大,属亚热带海洋性气候,全年平均气温22摄氏度左右,湿度较高,约73%-90%。秋季10月至12月是全年最好的季节,阳光充足,气候温和而且湿度较低。冬季1月至3月寒冷,但大部分时间天气晴朗。4月至9月,湿度和温度逐渐升高,这期间雨水较多,而且会有台风。澳门(Macau)有众多的名胜古迹,四百多年的中西方文化在这里凝固起来。澳门的繁华地段集中在市政厅一带,其中圣保罗教堂的牌坊已成为澳门的象征。博彩业是澳门的一大财政收入。澳门赌城遍布特区。此外,澳门还有众多的娱乐城、赛狗场等博彩娱乐业场所。
-----------------------
直辖市
特别行政区
黑龙江
吉林
辽宁
内蒙古
河北
河南
山东
山西
江苏
安徽
陕西
宁夏
甘肃
青海
湖北
湖南
浙江
江西
福建
贵州
四川
广东
广西
云南
海南
*
*
*
亚洲
欧洲
非洲
北美洲
南美洲
大洋洲
-----------------------
南京 (58238)
苏州 (58357)
昆山 (58356)
南通 (58259)
太仓 (58377)
吴县 (58349)
徐州 (58027)
宜兴 (58346)
镇江 (58248)
淮安 (58145)
常熟 (58352)
盐城 (58151)
泰州 (58246)
无锡 (58354)
连云港 (58044)
扬州 (58245)
常州 (58343)
宿迁 (58131)

参考博客:https://www.cnblogs.com/xdp-gacl/p/4260627.html