WebService学习总结(四)——调用第三方提供的webService服务

来源:互联网 发布:js 日期转字符串 编辑:程序博客网 时间:2024/05/27 20:18

互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为例进行说明。

  气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client).

一、 调用免费的web service获取天气预报信息

1.1、找到提供天气预报信息的Webservice的网络地址

  http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx 访问结果如下图所示:

  

  找到WebService的wsdl描述,通过URL地址http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl:如下:

  

1.2、客户端编码方式访问第三方提供的webService服务

  1、借助wsimport命令工具自动生成客户端代码

  创建一个测试项目,如下:

  

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

  

  运行结果显示,使用wsimport工具直接生成客户端代码会抛异常, 无法生成客户端代码, 只是因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:

  1. 将对应的wsdl文档保存到本地

  

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

  

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

  

  从执行结果显示,这一次可以正常生成代码了,刷新一下src目录,就可以看到生成的代码了,如下图所示:

  

2、借助生成的代码编写请求代码

复制代码
 1 package me.gacl.ws.client; 2  3 import java.util.List; 4  5 import cn.com.webxml.ArrayOfString; 6 import cn.com.webxml.WeatherWS; 7 import cn.com.webxml.WeatherWSSoap; 8  9 public class WeatherWSClient {10 11     public static void main(String[] args) {12         //创建一个WeatherWS工厂13         WeatherWS factory = new WeatherWS();14         //根据工厂创建一个WeatherWSSoap对象15         WeatherWSSoap weatherWSSoap = factory.getWeatherWSSoap();16         //调用WebService提供的getWeather方法获取南宁市的天气预报情况17         ArrayOfString weatherInfo = weatherWSSoap.getWeather("南宁", null);18         List<String> lstWeatherInfo = weatherInfo.getString();19         //遍历天气预报信息20         for (String string : lstWeatherInfo) {21             System.out.println(string);22             System.out.println("------------------------");23         }24     }25 }
复制代码

  访问结果如下:

复制代码
广西 南宁------------------------南宁------------------------2391------------------------2015/01/29 19:00:49------------------------今日天气实况:暂无实况------------------------空气质量:暂无;紫外线强度:最弱------------------------太阳镜指数:不需要。白天光线弱不需要佩戴太阳镜。穿衣指数:较舒适。建议穿薄外套或牛仔裤等服装。旅游指数:适宜。温度适宜,可尽情享受大自然风光。运动指数:较适宜。较适宜进行各种户内外运动。洗车指数:不宜。有雨,雨水和泥水会弄脏爱车。化妆指数:保湿。请选用中性保湿型霜类化妆品。感冒指数:较易发。天较凉,增加衣服,注意防护。空气污染指数:暂无。紫外线指数:最弱。辐射弱,涂擦SPF8-12防晒护肤品。舒适度指数:舒适。白天不冷不热,风力不大。------------------------1月29日 多云------------------------11℃/15℃------------------------东北风微风------------------------1.gif------------------------1.gif------------------------1月30日 小雨转阴------------------------10℃/15℃------------------------东北风微风------------------------7.gif------------------------2.gif------------------------1月31日 多云------------------------11℃/13℃------------------------东北风微风------------------------1.gif------------------------1.gif------------------------2月1日 多云------------------------12℃/17℃------------------------东北风微风------------------------1.gif------------------------1.gif------------------------2月2日 阴转多云------------------------13℃/18℃------------------------东北风微风------------------------2.gif------------------------1.gif------------------------
复制代码

  这样,我们通过生成的Client代码调用了第三方提供的webService服务获取到了南宁市的天气预报信息。

二、 调用免费的web service查询国内手机号码归属地

2.1、找到提供服务的Webservice的网络地址

  http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx 如下所示:

  

  找到WebService的wsdl描述信息,通过URL地址http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl:如下:

  

2.2、编写客户端访问调用WebService服务

1、创建客户端项目

  

2、根据WebService的wsdl描述生成客户端代码

  打开命令行窗口,切换到Phone_Client的src目录,执行wsimport -keep http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 如下图所示:

  

  这次可以直接使用wsdl生成代码,不再需要将wsdl文件下载到本地进行修改了,这个WebService应该不是使用.net写的,生成的代码如下:

  

  3、借助生成的代码编写请求代码

复制代码
 1 package me.gacl.ws.client; 2  3 import cn.com.webxml.MobileCodeWS; 4 import cn.com.webxml.MobileCodeWSSoap; 5  6 public class PhoneWsClient { 7  8     public static void main(String[] args) { 9         //创建一个MobileCodeWS工厂10         MobileCodeWS factory = new MobileCodeWS();11         //根据工厂创建一个MobileCodeWSSoap对象12         MobileCodeWSSoap mobileCodeWSSoap = factory.getMobileCodeWSSoap();13         ////调用WebService提供的getMobileCodeInfo方法查询手机号码的归属地14         String searchResult = mobileCodeWSSoap.getMobileCodeInfo("15177196635", null);15         System.out.println(searchResult);16     }17 }
复制代码

  运行结果如下:
  

  这样我们调用第三方提供的WebService服务成功查询到了手机号码的归宿地。

  以上就是如何调用第三方WebService的相关内容。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 乱战佘赛花 超次元乱战 家乱战 乱战特工 乱战江湖 乱战ol 莽荒乱战 乱战 剧情 三国之召唤乱战天下 杰森斯坦森乱战在线播放 乱战高清线观看 乱战三国飞升版 乱战平民卡组 三国之召唤乱战天下 鬼仙谋主 超次元乱战吧 龙珠次元乱战 剪不断理还乱打一成语 稳如泰山心不乱打一生肖 晓霞小敏全家乱txt免费下载 乱花渐欲迷人眼 乱花渐欲 乱花渐欲迷人眼什么意思 乱妻换欲 乱花渐欲王禄财 乱花渐欲迷人眼上一句 不见可欲使心不乱 粮草欲空兵心乱 禁暴正乱 乱正打一成语疯狂看图 乱清 婷停激清网熟乱图区 激清网熟乱图区 乱清全文阅读 后宫好乱千里清秋 清四乱什么意思是什么 神志不清胡言乱语 宦乱天下之邪枭系统 上清布谷 乱清 青玉狮子 乱炖 东北乱炖 素菜乱炖