likes
comments
collection
share

webservice Java调用

作者站长头像
站长
· 阅读数 12

前言

Web Service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序

Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如标准通用标记语言下的子集XMLHTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

小例子 python调用

刚开始觉得java调用会比较麻烦就用python实现了一个,感兴趣的可以看一下,代码如下

# -*- coding: utf-8 -*-
# !/usr/bin/python3
# 国内手机号码归属地查询WEB服务

from suds.client import Client


def main():

    wsdl_url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl"
    # 创建一个webservice接口对象
    client = Client(wsdl_url)
    print("client", client)
    resp = client.service.getMobileCodeInfo("13513500902", "")
    # print(json.loads(resp))
    print(resp)


if __name__ == '__main__':
    main()

Java 调用

在Linux上使用wsdl2java可以通过以下步骤进行

  1. 打开终端,使用以下命令下载wsdl2java:

    wget http://www.apache.org/dist/cxf/3.3.7/apache-cxf-3.3.7.tar.gz
    

    此命令将下载CXF框架的tar.gz文件。

  2. 使用以下命令解压缩tar.gz文件:

    tar zxvf apache-cxf-3.3.7.tar.gz
    

    解压缩后,可以在文件夹apache-cxf-3.3.7/bin中找到wsdl2java命令。

  3. 在终端中,使用以下命令运行wsdl2java:

    /path/to/apache-cxf-3.3.7/bin/wsdl2java -d /path/to/output/folder <wsdl_url>
    

    其中,/path/to/apache-cxf-3.3.7是CXF框架的路径,/path/to/output/folder是生成的Java类文件的输出文件夹的路径,<wsdl_url>是WSDL文件的URL地址。


    运行该命令后,将生成Java类文件并输出到指定的文件夹中。

以上就是在Linux上使用wsdl2java的步骤。

举个🌰

这里以该Web Service为例,演示如何使用生成的Java类调用其中的方法。

  1. 使用wsdl2java生成Java类:

    /home/test/apache-cxf-3.1.6/bin/wsdl2java -d /home/test/wsdl/output http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl
    

    此命令将生成Java类,并输出到指定的文件夹中。

  2. 在Java代码中引入生成的类:

    import cn.com.webxml.qqCheckOnline.QQCheckOnlineWebService;
    import cn.com.webxml.qqCheckOnline.QQCheckOnlineWebServiceSoap;
    
  3. 创建QQCheckOnlineWebServiceSoap对象:

    QQCheckOnlineWebService service = new QQCheckOnlineWebService();
    QQCheckOnlineWebServiceSoap port = service.getQQCheckOnlineWebServiceSoap();
    
  4. 调用该对象的方法:

    String result = port.qqCheckOnline("123456789");
    System.out.println(result);
    

    这里调用了Web Service中的qqCheckOnline方法,并传入了一个QQ号码作为参数。该方法返回一个字符串,表示该QQ号码的在线状态。调用完成后,将返回的结果打印出来。

完整的Java示例代码如下:

javaCopy code
import cn.com.webxml.qqCheckOnline.QQCheckOnlineWebService;
import cn.com.webxml.qqCheckOnline.QQCheckOnlineWebServiceSoap;

public class QQOnlineWebServiceTest {
    public static void main(String[] args) {
        QQCheckOnlineWebService service = new QQCheckOnlineWebService();
        QQCheckOnlineWebServiceSoap port = service.getQQCheckOnlineWebServiceSoap();

        String result = port.qqCheckOnline("123456789");
        System.out.println(result);
    }
}

注意:在调用Web Service之前,请确保你的计算机能够访问该Web Service的地址,并且已经连接到互联网。

最后附上几个开源的webservice 可供测试使用

www.webxml.com.cn/zh_cn/index…