`
jaesonchen
  • 浏览: 313198 次
  • 来自: ...
社区版块
存档分类
最新评论

调用第三方提供的webService服务

 
阅读更多

  互联网上面有很多的免费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 -keephttp://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的相关内容。

分享到:
评论

相关推荐

    WebService调用第三方服务的案例

    WebService调用第三方服务是软件开发中的常见操作,特别是在构建分布式系统和实现跨平台通信时。本案例主要关注如何使用WebService来实现中英文自动转换的功能,这通常涉及到XML、SOAP(Simple Object Access ...

    java axis调用第三方webservice程序demo

    本文将详细介绍如何使用Java Axis调用第三方Webservice,并提供一个简单的示例。 一、Java Axis调用第三方Webservice的准备工作 1. **所需Jar包**: 在Java中使用Axis调用Webservice,首先需要引入必要的库文件。...

    java调用第三方webservice服务工具类

    使用Java调用webservice服务,工具类中获取天气服务,可根据官方api进行修改

    ABAP调用外部(第三方系统)WebService

    ### ABAP调用外部(第三方系统)WebService #### 基础知识 在开始学习如何在SAP系统中调用外部WebService之前,首先需要理解一些基本概念和技术。 1. **XML (可扩展标记语言):** XML是一种通用的、平台独立的数据...

    使用spring远程调用服务端接口实现WebService功能

    在Java EE平台上,Spring框架提供了一种强大的方式来实现远程服务调用,特别是通过其HttpInvokerServiceExporter组件来实现基于HTTP的WebService功能。这个技术允许客户端和服务端通过HTTP协议进行通信,实现远程...

    java调用天气预报webservice

    Java调用天气预报WebService是一个常见的任务,特别是在开发集成多种服务的应用程序时。WebService是一种基于XML标准的、平台和语言无关的通信协议,用于在不同系统间交换数据。在这个场景中,我们将探讨如何使用...

    Delphi调用WebService的实例(非常经典)[参考].pdf

    "Delphi调用WebService的实例(非常经典)" 在 Delphi 中调用 WebService 是一种非常经典的实例。下面我们将详细介绍 Delphi 调用 WebService 的相关知识点。 首先, Delphi 调用 WebService 需要了解基本概念。...

    Webservice 调用工具

    Webservice调用工具是专门用于测试和交互Web服务的软件,它们使得开发者能够方便地发送请求并接收响应,以便验证Web服务的功能和性能。Web服务通常基于SOAP(Simple Object Access Protocol)协议,这是一种使用XML...

    解析及动态调用Webservice程序

    动态调用Webservice是指在运行时根据需要创建并执行Web服务的方法,无需预先编译或硬编码调用的详细信息。这种灵活性允许开发者在不完全了解服务接口的情况下使用服务,只需知道服务的URL和WSDL(Web服务描述语言)...

    泛微 ecology9.0 第三方系统消息推送接口调用文档 .docx

    泛微Ecology9.0第三方系统消息推送接口调用文档是泛微Ecology9.0平台提供的一种消息推送机制,旨在帮助第三方系统与Ecology9.0平台集成,实现消息的实时推送和处理。本文档将详细介绍泛微Ecology9.0第三方系统消息推...

    springboot+webservice搭建webservice服务端及使用java客户端两种方式进行调用webservice接口

    接口通常以`.xsd`文件形式定义服务契约,而实现则提供具体的业务逻辑。例如,我们可以创建一个名为`GreetingService`的接口,其中包含一个`sayHello`方法: ```xml &lt;!-- greeting.xsd --&gt; ``` 接着,编写对应...

    MVC调用webService

    在JavaScript中,可以使用`XMLHttpRequest`对象或第三方库如jQuery的`$.ajax()`方法来实现。 - **RESTful WebService**:基于HTTP方法(GET、POST、PUT、DELETE等),通常返回JSON或XML格式的数据。JavaScript通过`...

    springboot动态调用webservice接口

    最近项目中遇到需要去掉老系统的webservice服务中的insert方法,找了很久,发现这样最简单,实测有效!!!

    socket多线程调用webservice服务实现系统对接

    由于银行后台核心系统普遍采用的是UNIX下C/C++的开发平台,如果需要调Web Service往往需要借助一些第三方的库,再加上第三方的加解密算法及包是由第三方提供的,如果直接在UNIX下开发项目成本会比较高,所以增加了一...

    通过Webservice方式提供U8二次开发API调用

    通过Webservice方式提供U8的API调用,可避免客户端安装用友U8才能调用到U8API,完整的调用源码..实现其他语言开发的平台可以调用U8 API生成单据以及处理单据的审核等. 需引用: UFIDA.U8.MomServiceCommon.dll UFIDA....

    vb6.0调用webservice详解

    调用Web服务的第一步是确保你已经安装了相应的服务,并且能够通过浏览器访问Web服务的WSDL(Web Service Description Language)文档,这个文档定义了服务提供的所有方法和参数。例如,在航天金税开票服务中,你需要...

    SpringBoot(32) 整合Forest实现调用第三方接口

    SpringBoot(32) 整合Forest实现调用第三方接口

    金蝶调用Webservice接口-SOAP

    总结,金蝶通过SOAP调用第三方Webservice接口的过程主要包括:创建服务、创建Dispatch、构造SOAP消息、调用服务并处理响应以及解析响应数据。这个过程展示了不同系统间集成的基本步骤,对于理解和实现类似的集成工作...

    第三方调用U9服务说明(DotNet平台).doc

    第三方调用U9服务说明(DotNet平台),包括系统调用中常见问题及处理方法。

Global site tag (gtag.js) - Google Analytics