WebService学习总结(4)——第三方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 -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的相关内容。

时间: 2024-10-13 11:47:57

WebService学习总结(4)——第三方webService服务调用的相关文章

WebService学习笔记-Ajax请求Webservice

Webservice地址为 http://192.168.13.232:8989/ws_01/umgsai JSP页面地址为 http://192.168.13.232:8080/Demo/index.jsp Webservice的请求体如下 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.umgsai.com/" x

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

WebService学习总结(四)——调用第三方提供的webService服务 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为例进行说明. 气象中心的管理系统将收集的天气信息并将数据暴露出来(通过WebService Server), 而各大站点的应用就去调用它们得到天气信息并以不同的样式去展示(WebService Client).一. 调用

【Java EE 学习第80天】【调用WebService服务的四种方式】

不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jdk命令wsimport生成调用源代码 package com.kdyzm.ws; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService public class MyWsServer { public Strin

[Python]webservice 学习(1) -- 简单服务和调用

由于项目中需要用到webservice来做接口,于是花点时间先做知识储备. 开始的时候觉着这个webservice就是一个http请求啊,服务端监听,客户端发送xml报文,然后解析下发送了什么内容,返回响应的数据. 这是百度百科对webservice的定义,一般使用wsdl来描述服务. 后来我的误区就是 wsdl的xml  和 用http 请求组成的xml也就是用soap来请求webservice, 这两种xml为啥不一样... 困惑: 看了些资料以后才明白,wsdl就是你发布的webservi

Android使用ksoap2-android调用WebService学习

转自 Android使用ksoap2-android调用WebService学习 之前主要做客户端UI交互,很少处理数据和接触服务端,但现在的移动设备根本不可能离得开网络连接,数据的交换.最近学习的是在android端如何去调用远程WebService,都说WebService是一种基于SOAP协议的远程调用标准,对于这个协议理解不深,知道webservice可以将不同操作系统平台.不同语言.不同技术整合到一块,android SDK没有直接调用webservice的库,最常用的是借助ksoap

[Python]webservice学习(2) --自己写soap消息请求服务

上文中webservice学习(1) ,使用soaplib建立了一个超简单的webservice服务,也是用suds调用成功了,那如果想使用http包自己组成一个soap消息来调用接口怎么办呢? 这个时候我们就想到使用wsdl这个文件了,我看了些wsdl的文档,也参照这其他人使用java,php等语言实现的soap消息调用的格式来写,但是怎么调试都没成功.. 就是说他总是会返回500或者是405各种错误,就是下面代码中的old_soap_body 变量中的消息格式. #coding: utf-8

vs自动生成的WebService配置文件在部署到IIs6后,服务调用失败的解决方法

近日,在项目中需要引用java发布的WebService,添加服务引用后,调用一切正常. 配置如下: <system.serviceModel> <bindings> <basicHttpBinding> <binding name="SecurityServiceImplServiceSoapBinding" maxBufferPoolSize="2147483647" maxReceivedMessageSize=&qu

WebService服务调用方法介绍

1 背景概述 由于在项目中需要多次调用webservice服务,本文主要总结了一下java调用WebService常见的6种方式,即:四种框架的五种调用方法以及使用AEAI ESB进行调用的方法. 2 预期读者 数通畅联内部员工 广大计算机爱好者 3 名词解释 Web Service也叫XML Web Service: WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术.是通过SOAP在Web上提供的软件服务,使用WSDL

webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口

webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲解SpringMVC+CXF环境下,怎么调用其他系统通过webService方式暴露出来的接口 ① 为避免怀疑同一个项目中调用本项目的接口,这里我新打开一个eclipse通过最原始的方式发布了一个webservice并启动保证可以被访问 打开浏览器确认可以被访问 ②进入CXF/bin 利用wsdl2