【问题标题】:Ways to create clients of soap web services创建soap web服务客户端的方法
【发布时间】:2016-05-01 01:03:16
【问题描述】:

我最近开始开发一些 SOAP 和 REST Web 服务。在 SOAP Web 服务中,我发现我必须先开发一个客户端才能使用该服务。

我想知道为 Web 服务开发客户端的不同方法。

我看到为 SOAP Web 服务开发客户端的方式独立于 Web 服务实现(CXF、AXIS、JAXB)。例如,创建客户端的一种方法是使用wsimport 命令行,该命令行通过将 WSDL 作为参数来生成客户端代码。

其他方式呢?

【问题讨论】:

    标签: java web-services soap jaxb


    【解决方案1】:

    要调用 SOAP Web 服务,您必须向其发送格式正确且尊重服务合同的 SOAP 消息。就是这样!

    所以基本上要创建一个客户端,您只需要构建该 XML 消息,例如,给定 this service,您可以执行以下操作(我假设 Java,因为您标记了这样的问题 - 但它适用于任何编程语言):

    1) 使用字符串连接(这是最基础的):

    int number1 = 1;
    int number2 = 2;
    String myMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
      + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
      + "  <soap:Body>"
      + "    <Add xmlns=\"http://tempuri.org/\">"
      + "      <intA>" + number1 + "</intA>"
      + "      <intB>" + number2 + "</intB>"
      + "    </Add>"
      + "  </soap:Body>"
      + "</soap:Envelope>";
    

    然后执行(基本)POST that to the service,注意为其提供所需的 HTTP 标头(如 SOAPAction 等)。

    2) 手动构建 XML 文档以发送到服务,例如 using SAAJ

    3) 使用 service WSDL 并将其从某些框架/库(JAX-WS、Axis2、CXF 等)提供给工具(wsimport、wsdl2java 等)以获取将调用抽象为一个简单的方法调用的客户端,该方法调用采用 Java 对象并返回 Java 对象。

    4) 您能想到的任何其他方法来创建 SOAP 消息并将其作为 POST 请求发送(我看到您标记了问题 JAXB,这也可以......)。

    如今调用 SOAP Web 服务非常普遍,当几乎每种语言都有工具可以从 WSDL 生成客户端时,没有人会费心花时间构建客户端。这是样板代码。

    人们只是想要一个客户,把它推到项目中,使用它,然后继续在他们的应用程序中做更重要的事情。这就是为什么大多数人选择第 3 点)。

    我看到为 SOAP Web 服务开发客户端的方式独立于 Web 服务实现

    是的,您可以使用一种编程语言/技术堆栈提供服务,而使用另一种编程语言/技术堆栈提供客户端。 SOAP 协议是共同点。尊重协议和服务合同,服务可以与任何客户端合作。

    【讨论】:

      猜你喜欢
      • 2011-10-11
      • 1970-01-01
      • 2010-12-23
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      相关资源
      最近更新 更多