【问题标题】:Technically,to create soap message, WSDL file is a must?从技术上讲,要创建肥皂消息,WSDL 文件是必须的吗?
【发布时间】:2014-02-22 07:15:49
【问题描述】:

我正在使用 SoapUI 生成肥皂请求。它提示我输入 wsdl 文件。我这样做了,它创造了肥皂式的信息。一切正常。

但我有一个疑问。如果我有没有任何 WSDL 文件的 web 服务,我仍然可以手动生成肥皂式消息吗?如果可以,怎么做?

或者如果我知道webservice需要输入两个int参数并返回一个字符串值,我可以仅通过这些有限的信息来推测soap消息吗?

【问题讨论】:

    标签: web-services soap web wsdl remote-access


    【解决方案1】:

    如果您只是在做-requests-,那么如果您知道您要询问的特定服务以及您所说的参数,则不需要 WSDL 文件。您甚至可以手动创建请求,然后通过 HTTP 发送它(例如,您可以使用编辑器在文件中创建它,然后通过 wget 或 curl 发送)。

    举个例子,我会引用维基百科:

    <?xml version="1.0"?>
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
      <soap:Header>
      </soap:Header>
      <soap:Body>
        <m:GetStockPrice xmlns:m="http://www.example.org/stock">
          <m:StockName>IBM</m:StockName>
        </m:GetStockPrice>
      </soap:Body>
    </soap:Envelope>
    

    您需要更改的是 soap:Body 中的部分:当然是 GetStockPrice(这是您正在访问的服务)和 StockName 这是参数(在您的情况下,您可能有多个)。

    如果有疑问,您可以在套接字上放置一些东西(例如 netcat)并让您的应用程序使用 WSDL 对其进行查询并查看确切信息,然后删除 WSDL 并“手动”工作。

    【讨论】:

      【解决方案2】:

      在 Java 中:如果您有 web 服务(带注释的类等),您的服务器会在您部署它时创建一个 WSDL 文件。您可以将这个 WSDL 用于soapUi。


      如果您有任何结构(端点、类、XSD 等),您可以手动创建soap 消息。

      如果您没有将 WSDL 用于肥皂消息,它将不会调用/发送此消息。因此,根据协议,wsdl 文档是必需的元素。 WSDL 描述了如何调用服务、它需要什么参数以及它返回什么数据结构。

      来自Wikipedia

      WSDL 通常与 SOAP 和 XML Schema 结合使用 通过 Internet 提供 Web 服务。一个客户端程序连接到 Web 服务可以读取 WSDL 文件以确定哪些操作是 服务器上可用。使用的任何特殊数据类型都嵌入在 XML Schema 形式的 WSDL 文件。然后客户端可以使用 SOAP 使用实际调用 WSDL 文件中列出的操作之一 例如基于 HTTP 的 XML。


      Here is in example 用于动态调用 Web 服务。在这种情况下,作者不知道 WSDL 的描述。

      【讨论】:

      • 我认为wsdl文件只是为了描述webservice是什么。如果 wsdl 文件不存在,则客户端调用服务无关紧要。不是吗?
      • 天哪,是的。客户端无法调用服务。您可以在没有 WSDL 的情况下创建肥皂消息,但客户端无法调用/发送它。
      【解决方案3】:

      WSDL 的目的是描述服务。

      这种机器可读的描述允许计算机程序创建知道如何调用服务和处理响应的客户端。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多