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

前言

对于webservice的介绍,本文就不再赘余讲述。
详见文章 webservice:(1)新手搭建调用webservice那些坑

首先,先给出一个站点,该站点提供了许多webservice服务,可供调用测试。
站点: http://www.webxml.com.cn/zh_cn/index.aspx

如上图所示,我们本文将测试归属地webservice。
我们先查询该webservice相关服务。

webservice:(2)体验查询号码归属地demo_第1张图片
webservice:(2)体验查询号码归属地demo_第2张图片

大家可以在该文本框中输入手机号,userID忽略,点击调用即可查询手机归属地。
接下来我们通过代码测试该ws。

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

步骤

1.记录所调用webservice的WSDL

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

webservice:(2)体验查询号码归属地demo_第3张图片

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

webservice:(2)体验查询号码归属地demo_第4张图片

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

Problem:在mac下的终端,若使用到了zsh,可能会出现以下情况。

这是由于 zsh 不兼容的问题!!!
具体原因:
因为zsh缺省情况下始终自己解释这个 *.h,而不会传递给 find 来解释。
解决方案:
打开 terminal,在~/.zshrc中加入:
setopt no_nomatch, 然后进行 source .zshrc 命令即可

以下为copy入项目空间的示例图
注:ws.client.test下的WebserviceTest为webservice测试类,暂时忽略。

webservice:(2)体验查询号码归属地demo_第5张图片

这样就有了号码归属地查询这个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);
    }
}

测试结果示例

webservice:(2)体验查询号码归属地demo_第6张图片

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

总结:

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

你可能感兴趣的:(webservice:(2)体验查询号码归属地demo)