博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebService-—调用第三方提供的webService服务
阅读量:7186 次
发布时间:2019-06-29

本文共 4014 字,大约阅读时间需要 13 分钟。

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

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

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

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

   访问结果如下图所示:

  

  找到WebService的wsdl描述,通过URL地址:如下:

  

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

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

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

  

  打开命令行窗口,切换到项目的src目录,执行"wsimport -keep "生成客户端代码,如下图所示:

  

  运行结果显示,使用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
 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的网络地址

   如下所示:

  

  找到WebService的wsdl描述信息,通过URL地址:如下:

  

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

1、创建客户端项目

  

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

  打开命令行窗口,切换到Phone_Client的src目录,执行wsimport -keep  如下图所示:

  

  这次可以直接使用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的相关内容。

本文转自lzf0530377451CTO博客,原文链接:http://blog.51cto.com/8757576/1872895 ,如需转载请自行联系原作者

你可能感兴趣的文章
我的大学n糊口
查看>>
设置easyUi弹出窗在弹出框(iframe)中不居中问题
查看>>
Scrapy框架下第一个爬虫
查看>>
自动化运维工具puppet(五)
查看>>
linux网络命令(八)之top、htop
查看>>
【Windows和Linux下定时删除某天前的文件的脚本】
查看>>
长视频的危机:直播和短视频的爆发式增长
查看>>
医疗信息化 医学 医院管理 资料下载
查看>>
centos6.5搭建docker私有库
查看>>
《Kotlin 极简教程 》第4章 基本数据类型与类型系统
查看>>
2012春晚十大流行语
查看>>
XP下关于安装.net 3.5/4.0 报错:安装未完成
查看>>
Collections类中常用方法总结
查看>>
我的友情链接
查看>>
Android 数据查询query函数参数解析
查看>>
PHP 方法重载介绍
查看>>
教会你Redhat Enterprise Linux关闭SELinux
查看>>
搭建一个git 私有仓库
查看>>
springboot及微服务
查看>>
打算做一个网站
查看>>