2012-05-09 77 views
6

我有一个一般的Web服务问题,我希望你能帮我清楚我对这个问题的困惑。Web服务 - SOAP与“XML over HTTP”

我正在使用主机正在调用“XML over HTTP服务”的Web服务。他们声称此服务不是SOAP服务,但响应是SOAP信封响应。该服务目前通过HTML表单发布进行调用;这里是HTML表单和响应:

HTML

<FORM name=TestForm action=http://intranet/TheWSMethod enctype="text/plain" method="POST"> 
    <TEXTAREA name=Data rows=22 cols=91 type="text" style="position: absolute; left: 78; top: 69; width:752px; height:330px"></TEXTAREA> 
    <INPUT type=xml> 
    <INPUT type=submit value="Transmit"> 
</FORM> 

响应 - 基于SOAP?

<?xml version="1.0" encoding="UTF-8" ?> 
<soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <faultcode>soap-env:Server</faultcode> 
    <faultstring>9001</faultstring> 
    <faultactor>/TheWSMethod</faultactor> 
    <detail> ... </detail> 
</soapenv:Fault> 

主告诉我,有这个过程,这是我的困惑开始的地方没有WSDL

所以我的问题是,是否存在/应该是现有的WSDL? (即他们拉我的腿还是他们不明白我在问什么),还是有可能没有这种类型的服务的WSDL?

回答

14

SOAP只是XML over HTTP的专门化,您发布的响应看起来确实看起来像一个SOAP响应(实际上是SOAP fault)。

这看起来像是一个很大的误解,所以不要以为他们在拉你的腿。尝试以不同的方式询问你的问题。对于WSDL,如果这确实是一个100%的SOAP Web服务,请注意,对于SOAP Web服务并不一定要有WSDL。

Web服务只是一个应用程序,通过网络公开一组操作。为了调用这些操作,你需要知道他们的名字是什么,他们期望什么参数,参数是什么类型等,以便你知道如何构建你的client stub

这意味着Web服务需要记录,否则你不会知道如何编写与Web服务交互的代码。这个文档可以是一个Word文档或一个PDF,你可以手动建立客户端(这涉及到为你的客户端存根编写大量管道代码)文档可能是一个WSDL文件,它不像PDF或Word文档可以被传送到一个工具来自动生成存根管道代码。

WSDL描述了Web服务 - 这是一种很好的实践 - 但是Web服务与WSDL分开存在。

+1

谢谢你的解释。这有助于消除我自己的困惑。 – user891859

1

WSDL主要是Web服务的定位器。您可以选择使用某种工具从其中生成客户端类来访问Web服务。