Spring Boot SOAP系列之WSDL是什么“Lese”

相关历史文章(阅读本文之前,您可能需要先看下之前的系列

WebService SOAP概述 - 第275篇

WSDL是什么“Lese” - 第276篇

Spring boot webservice怎么玩? - 第277篇

Spring boot cxf构建webservice服务 - 第278篇

Spring boot cxf调用webservice服务 - 第279篇

 

一、前言

       在前面的小节中已经成功发布了web service服务,这一节看看怎么调用。

 

二、WebService调用方式

       对于WebService的调用,有如下几种方式:

(1)使用CXF.JaxWsDynamicClientFactory的client动态调用。

(2)利用axis2的RPC方式调用webservice。

(3)利用HttpClient调用webservice。

(4)通过javax.xml.ws.Service的方式调用WebService

       在这里我们使用方式一进行讲解说明。

 

二、调用Hello CXF服务

       这里可以在新建一个项目,也可以在原有的项目直接调用:

import java.lang.reflect.Method;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

public class CXFClientTest {
    //动态调用
    public static void main(String[] args) throws Exception {
        JaxWsDynamicClientFactory dcflient = JaxWsDynamicClientFactory.newInstance();

        Client client=dcflient.createClient("http://127.0.0.1:8080/cxf/helloService?wsdl");

        // 需要密码的情况需要加上用户名和密码
        Object[] objects=client.invoke("sayHello","悟纤");
        for(Object obj:objects) {
            System.out.println(obj);
        }

}
 

       调用成功,控制台打印:hello , 悟纤

BTW:调用的核心就是地址、方法、参数,调用本身是很简单的一个事情。

 

三、调用查询手机号归属地服务

       要调用服务,要知道WSDL文档的地址:

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

       访问WSDL文档地址,可以得到如下的格式:


    
        WebXml.com.cn
        国内手机号码归属地查询WEB服务
        ,提供最新的国内手机号码段归属地数据,每月更新。
        
使用本站 WEB 服务请注明或链接本站: http://www.webxml.com.cn/ 感谢大家的支持!
 

获得国内手机号码归属地省份、地区和手机卡类型信息

输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID) 免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。



获得国内手机号码归属地数据库信息

输入参数:无;返回数据:一维字符串数组(省份 城市 记录数量)。



获得国内手机号码归属地省份、地区和手机卡类型信息

输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID) 免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。



获得国内手机号码归属地数据库信息

输入参数:无;返回数据:一维字符串数组(省份 城市 记录数量)。



获得国内手机号码归属地省份、地区和手机卡类型信息

输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID) 免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。



获得国内手机号码归属地数据库信息

输入参数:无;返回数据:一维字符串数组(省份 城市 记录数量)。


WebXml.com.cn 国内手机号码归属地查询WEB服务 ,提供最新的国内手机号码段归属地数据,每月更新。
使用本站 WEB 服务请注明或链接本站: http://www.webxml.com.cn/ 感谢大家的支持!
 
 

       可以自己用浏览器打开访问一下;

       一眼望去,可能接口看起来很复杂,较为繁琐。  但是作为开发人员,使用的时候,  我们可以查看关注点信息,就能实现接口的调用了。

       那么我们需要了解哪些信息呢?

       从上面的文档里面,我们需要从头部(最上面一行)了解到:

targetNamespace="http://WebXml.com.cn/"

       通过wsdl:portType可以该文档提供了如下方法:

getMobileCodeInfo:获得国内手机号码归属地省份、地区和手机卡类型信息。

getDatabaseInfo:获得国内手机号码归属地数据库信息。

       通过types就能找到getMobileCodeInfo需要传递的参数:


    
    
 

       需要两个参数:

mobileCode:手机号码,最少前7位数字

userID:商业用户ID) 免费用户为空字符串

       通过service找到请求地址:

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

       综上分析就可以得出,发起SOAP请求所需要的数据了:

WebService的URL:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx
Namespace:http://WebXml.com.cn/
method:getMobileCodeInfo/getDatabaseInfo
params:mobileCode(必须)、userId(非必须)

 

       这时候得到这些信息之后,就可以编写代码进行调用了:

package com.kfit.demo;

import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;

public class CXFClientForMobileCodeTest {
    //动态调用
    public static void main(String[] args) throws Exception {
        JaxWsDynamicClientFactory dcflient = JaxWsDynamicClientFactory.newInstance();

        Client client=dcflient.createClient("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");

        Object[] objects=client.invoke("getMobileCodeInfo","1593258xxxx","");
        for(Object obj:objects) {
            System.out.println(obj);
        }
    }

}
 

       调用成功之后,控制台返回:1593258xxxx:河北 唐山 河北移动全球通卡

 

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

 

à悟空学院:http://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

 

SpringBoot视频:http://t.cn/R3QepWG

Spring Cloud视频:http://t.cn/R3QeRZc

SpringBoot Shiro视频:http://t.cn/R3QDMbh

SpringBoot交流平台:http://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/R1pSojf

SpringSecurity5.0视频:http://t.cn/EwlLjHh

Sharding-JDBC分库分表实战:http://t.cn/E4lpD6e

你可能感兴趣的