WebService学习总结(三)--调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取电子邮箱验证和查询火车时刻表和天气预报为例进行说明。
一、调用WebService验证 Email 地址是否正确
1.1、找到提供Email验证的Webservice的网络地址
http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx访问如图所示:
找到WebService的wsdl描述,通过URL地址http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl:如下:
1.2、客户端编码方式访问第三方提供的webService服务
1、借助wsimport命令工具自动生成客户端代码
创建一个测试项目,如下:
打开命令行窗口,切换到项目的src目录,执行"wsimport -keep http://www.webxml.com.cn/WebServices/ValidateEmailWebService.asmx?wsdl"生成客户端代码,如下图所示:
生成的代码如下:
借助生成的代码编写请求代码
package cn.com.emailWsClient; import cn.com.webxml.ValidateEmailWebService;
import cn.com.webxml.ValidateEmailWebServiceSoap; public class EmailWsClient {
public static void main(String[] args) {
//创建ValidateEmailWebService工厂
ValidateEmailWebService factory = new ValidateEmailWebService();
//创建ValidateEmailWebServiceSoap对象
ValidateEmailWebServiceSoap emailInfo = factory.getValidateEmailWebServiceSoap(); String email = "myl@163.com";
//调用Email验证方法
//,
/**
* 输入参数:EmailAddress = Email 地址(默认SMTP端口25)
* 返回数据: Byte 字节。
* 返回值:
* 0 = 请重新验证;
* 1 = 邮件地址合法;
* 2 = 只是域名正确;
* 3 = 一个未知错误;
* 4 = 邮件服务器没有找到;
* 5 = 电子邮件地址错误;
* 6 = 免费用户验证超过数量(50次/24小时);
* 7 = 商业用户不能通过验证
*
*/
int emaileResult = emailInfo.validateEmailAddress(email);
switch (emaileResult) {
case 0:
System.out.println("重新验证");
break;
case 1:
System.out.println("邮件地址合法");
break;
case 2:
System.out.println("只是域名正确");
break;
case 3:
System.out.println("一个未知错误");
break;
case 4:
System.out.println("邮件服务器没有找到");
break;
case 5:
System.out.println("电子邮件地址错误");
break;
case 6:
System.out.println("免费用户验证超过数量(50次/24小时)");
break;
case 7:
System.out.println("商业用户不能通过验证");
break;
default:
break;
} }
}
测试多个Email地址,返回值
这样,我们通过生成的Client代码调用了第三方提供的webService服务获取email是否通过验证。
二、 调用免费的web service查询国内火车时刻表
2.1、找到提供服务的Webservice的网络地址
http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx如图所示:
找到WebService的wsdl描述信息,通过URL地址http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl:如下:
2.2、编写客户端访问调用WebService服务
1、创建客户端项目(如例1)
2、根据WebService的wsdl描述生成客户端代码
打开命令行窗口,切换到Phone_Client的src目录,执行wsimport -keep http://www.webxml.com.cn/WebServices/TrainTimeWebService.asmx?wsdl 如下图所示:
运行结果显示,使用wsimport工具直接生成客户端代码会抛异常, 无法生成客户端代码, 只是因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:
1、将对应的wsdl文档保存到本地(Ctrl+s)
2、修改wsdl文档的部分内容:将 <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>
替换成
根据刚刚保存到本地的wsdl文件生成代码,如下图所示:
从执行结果显示,这一次可以正常生成代码了,刷新一下src目录,就可以看到生成的代码了,如下图所示:
2、借助生成的代码编写请求代码
package cn.com.TrainTimeClient; import java.util.Date;
import java.util.List; import cn.com.webxml.ArrayOfString;
import cn.com.webxml.GetStationNameDataSetResponse.GetStationNameDataSetResult;
import cn.com.webxml.TrainTimeWebService;
import cn.com.webxml.TrainTimeWebServiceSoap;
/**
*
* @author myl
* @version 2018.4.15
* 火车时刻表 WEB 服务 (第六次提速最新列车时刻表)
*/
public class TrinTimeClient { public static void main(String[] args) {
//创建TrainTimeWebService工厂
TrainTimeWebService factory = new TrainTimeWebService();
//创建TrainTimeWebServiceSoap对象
TrainTimeWebServiceSoap trainInfo = factory.getTrainTimeWebServiceSoap();
//获得本火车时刻表Web Services的全部始发站名称
ArrayOfString trainResult = trainInfo.getStationName();
List<String> listTrain = trainResult.getString();
for(String train : listTrain){
System.out.println(train);
}
//获得本火车时刻表Web Services的数据库版本更新时间
String date = trainInfo.getVersionTime();
System.out.println(date); //获得本火车时刻表Web Services支持的全部站台名称和拼音缩写 DataSet
GetStationNameDataSetResult dataSet = trainInfo.getStationNameDataSet();
List<Object> listds = dataSet.getAny();
for(Object ds : listds){
System.out.println(ds.toString());
}
}
}
返回值
这样,我们通过生成的Client代码调用了第三方提供的webService服务获取火车时刻表的一些信息。
三、调用免费的web service获取天气预报信息
3.1、找到提供天气预报信息的Webservice的网络地址
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx访问结果如下图所示:
找到WebService的wsdl描述,通过URL地址http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl:如下:
3.2、客户端编码方式访问第三方提供的webService服务
1、借助wsimport命令工具自动生成客户端代码
创建一个测试项目,如下:
打开命令行窗口,切换到项目的src目录,执行"wsimport -keep http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"生成客户端代码,如下图所示:
运行结果显示,使用wsimport工具直接生成客户端代码会抛异常, 无法生成客户端代码, 只是因为我们要调用的WebService是用.net写的,这个是Java调用net的webservice都有的问题,这个问题的解决办法如下:
1、将对应的wsdl文档保存到本地(Ctrl+s)
2、修改wsdl文档的部分内容:将 <s:element ref="s:schema" /><s:any /> 替换成 <s:any minOccurs="2" maxOccurs="2"/>
替换成
根据刚刚保存到本地的wsdl文件生成代码,如下图所示:
从执行结果显示,这一次可以正常生成代码了,刷新一下src目录,就可以看到生成的代码了,如下图所示
2、借助生成的代码编写客户端请求代码
package cn.com.client; import java.util.List;
import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebService;
import cn.com.webxml.WeatherWebServiceSoap; /**
*
* @author myl
* @version 2018.4.15
*
*/
public class WeatherWSClient { public static void main(String[] args) {
//创建WeatherWebService工厂
WeatherWebService factory = new WeatherWebService();
//创建WeatherWebServiceSoap对象
WeatherWebServiceSoap weatherInfo = factory.getWeatherWebServiceSoap();
//根据地区获取天气情况
ArrayOfString weatherResult = weatherInfo.getWeatherbyCityName("北京");
//ArrayOfString 保存转化为List对象
List<String> listWeather = weatherResult.getString();
for(String weather : listWeather){
System.out.println(weather);
}
} }
返回结果:
这样,我们通过生成的Client代码调用了第三方提供的webService服务获取到了南宁市的天气预报信息。
WebService学习总结(三)--调用第三方提供的webService服务的更多相关文章
- WebService学习总结(四)——调用第三方提供的webService服务
http://www.cnblogs.com/xdp-gacl/p/4260627.html 互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他 ...
- WebService学习--(四)调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...
- WebService学习总结——调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据. 气象中心的管理系统将收 ...
- 【WebService】调用第三方提供的webService服务(七)
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...
- WebService-调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据和查询国内手机号码归属地为 ...
- 延迟调用或多次调用第三方的Web API服务
当我们调用第三方的Web API服务的时候,不一定每次都是成功的.这时候,我们可能会再多尝试几次,也有可能延迟一段时间再去尝试调用服务. Task的静态方法Delay允许我们延迟执行某个Task,此方 ...
- 调用别人提供的WebService
在开发过程中,许多时候需要使用到别人提供的WebService接口,使用其中的方法. 在调用别人提供的接口时,会得到接口使用的文档,其中包括接口的网络地址及方法作用等. 找到WebService的ws ...
- WebService学习总结(三)——使用JDK开发WebService
一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发Web ...
- 根据第三方提供的webservice地址获取文件信息
import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.en ...
随机推荐
- mysql 占用90%多的CPU,解决思路
网站打开很慢,爆出了连接数据库的错误,进入服务器,top 看了下,mysql占用cpu 基本维持在90以上: mysql> show variables like '%slow%'; ...
- AWS 安全信息泄露-----21天烧了27万
安全问题一直都是个老生常谈的话题,对于我们做IT的来说,是更为重视的.从使用开发工具的是否授权合规,到从事的工作内容是否合法.我们都应该认真的思考一下这些问题,毕竟我们要靠IT这门手艺吃饭. 2021 ...
- Oracle中使用虚拟表DUAL或XMLTABLE返回顺序数列
在Oracle中使用虚拟表DUAL或XMLTABLE返回顺序数列 使用DUAL表和CONNECT BY LEVEL的特殊用法,返回一个1-10的顺序数列,示例代码如下: SELECT LEVEL FR ...
- c++ 跨平台线程同步对象那些事儿——基于 ace
前言 ACE (Adaptive Communication Environment) 是早年间很火的一个 c++ 开源通讯框架,当时 c++ 的库比较少,以至于谈 c++ 网络通讯就绕不开 ACE, ...
- 【笔记】Stacking方法
Stacking 先前学习的集成学习 先前的思路很简单,假设有三个算法,每个算法都对数据进行一个预测,最后综合这三个结果得出一个最终结果,对于分类问题可以进行少数服从多数,对于回归问题可以简单地取平均 ...
- Debian 11 “bullseye” 安装笔记
作者:gc(at)sysin.org,主页:www.sysin.org Debian 版本:11 代号:bullseye 发布日期:2021.08.14 内核版本:5.10 $ uname -a Li ...
- DVWA靶场之File Upload(文件上传)通关
Low: <?php if( isset( $_POST[ 'Upload' ] ) ) { // Where are we going to be writing to? $target_pa ...
- 002 TCP/IP模型
一.TCP/IP 的含义 一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称. 具体点,IP或ICMP.TCP或UDP.TELENT或FTP.以及HTTP等都属于TCP/IP协议,而T ...
- linux ftp ubuntu18.04 实测有效 完整方法 vsftpd
https://linuxize.com/post/how-to-setup-ftp-server-with-vsftpd-on-ubuntu-18-04/ 除了此链接完整有效,其他网友 大都残缺不全 ...
- Java异常处理的两种方式以及自定义异常的使用方法
异常 就是程序出现了不正常的情况 Error:严重问题,不需要处理 Exception:称为异常类,他表示程序本身可以处理的问题 RuntimeException:在编译期是不检查的,出现问题后,需要 ...