2012-05-09 108 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服務。