您的位置:首页 > 其它

webservice:(2)体验查询号码归属地demo

2017-04-15 21:48 218 查看

前言

对于webservice的介绍,本文就不再赘余讲述。

详见文章 webservice:(1)新手搭建调用webservice那些坑

首先,先给出一个站点,该站点提供了许多webservice服务,可供调用测试。

站点: http://www.webxml.com.cn/zh_cn/index.aspx



如上图所示,我们本文将测试归属地webservice。

我们先查询该webservice相关服务。





大家可以在该文本框中输入手机号,userID忽略,点击调用即可查询手机归属地。

接下来我们通过代码测试该ws。

注:请求方式有很多种,分别为post、get、soap、wsimport。在这里,使用wsimport方式请求!!!

步骤

1.记录所调用webservice的WSDL

进入之前的站点,找到相应webservice,点击服务说明



以下即为相应WSDL,一份xml文档



copy该站点的URL,如下

http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL


2.使用JDK目录下的工具-wsimport,生成调用webservice相应的代码

wsimport 是一个命令,jdk1.6及以上才可以使用,ws针对不同的语言都会有个wsimport命令,我们可以在自己安装的jdk的bin目录下找到这个 wsimport.exe ,正因为有了这个,所以我们可以在命令行中使用wsimport命令。

输入以下命令,会在特定的包中生成java与class文件,接着将其copy至项目路径下即可。

wsimport -s . -p ws.client.c http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL[/code] 
Problem:在mac下的终端,若使用到了zsh,可能会出现以下情况。



这是由于 zsh 不兼容的问题!!!

具体原因:

因为zsh缺省情况下始终自己解释这个 *.h,而不会传递给 find 来解释。

解决方案:

打开 terminal,在~/.zshrc中加入:

setopt no_nomatch, 然后进行 source .zshrc 命令即可

以下为copy入项目空间的示例图

注:ws.client.test下的WebserviceTest为webservice测试类,暂时忽略。



这样就有了号码归属地查询这个ws服务相关的API了,且是通过官方的WSDL来生成的。接着,便是编写测试类测试功能了。

3.编写测试类测试

package ws.client.test;
import ws.client.c.MobileCodeWS;
import ws.client.c.MobileCodeWSSoap;

public class WebserviceTest {
public static void main(String[] args) {

//获取一个webservice服务
MobileCodeWS ws = new MobileCodeWS();

//获取具体服务类型:get post soap1.1 and soap1.2
MobileCodeWSSoap wsSoap = ws.getMobileCodeWSSoap();
String address = wsSoap.getMobileCodeInfo("你的手机号码", null);

System.out.println("手机归属地信息:"+ address);
}
}


测试结果示例



OK!!!到这里我们就体验完了该webservice。

总结:

webservice中WSDL很重要,里面用xml描述了webservice的信息,所以我们可以通过解析WSDL来获取该webservice相关的API,然后在自己的项目中调用这些API即可调用该webservice。

编程是一门事业。互励共勉!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: