从技术上讲,要创建soap消息,WSDL文件是必须的吗?

时间:2014-01-30 05:47:42

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

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

但我怀疑。如果我有没有任何WSDL文件的webservice,我还可以手工生成soap样式的消息吗?如果可以,怎么样?

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

3 个答案:

答案 0 :(得分:3)

如果您只是在执行-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>

你需要改变的是肥皂中的部分:身体:当然是GetStockPrice(你正在访问的服务)和StockName这是参数(在你的情况下,你可能有多个)。 / p>

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

答案 1 :(得分:0)

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


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

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

来自Wikipedia

  

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


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

答案 2 :(得分:0)

WSDL的目的是描述服务。

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