學習SOAP本身需要你學習XML和大量的SOAP特定的東西。
但是,您已經標記了您的問題PHP,因此我假定您實際要求的是瞭解如何通過PHP使用SOAP Web服務。這與學習SOAP本身不同,因爲PHP(像大多數其他語言一樣)將SOAP的混亂XML位抽象出來,並將其變成一個易於使用的對象。
無論如何,這就是理論。
在PHP上有兩種常用的SOAP工具包。一個叫做NuSOAP。這很有效,但不再處於積極的開發階段(它是在PHP提供自己的內置SOAP類之前編寫的)。 如果你想使用的NuSOAP,這裏是官方項目網站:http://nusoap.sourceforge.net/
如果你使用PHP5.2或5.3(你是應該的,因爲他們是目前唯一支持的版本),那麼你將有一個內置的SOAP類。 如果你想使用的PHP官方SOAP類,這裏的手冊頁:http://php.net/manual/en/book.soap.php
一旦你選擇你要使用的SOAP類,你需要知道一點,一般SOAP Web服務,以及您想要使用的特定服務。
首先,您需要知道服務是否提供WSDL。 WSDL是定義SOAP服務上可用的方法和參數的另一個XML文檔。這允許您的SOAP類爲SOAP服務定義一個類,這使得您作爲程序員更容易。在PHP中的實踐中,它並沒有真正做出多大的區別。
我也推薦你下載SOAP UI,這是一個SOAP服務的調試工具。它允許您查看和修改發送和接收的確切XML代碼。它可以幫助你學習和理解SOAP的工作原理,並且如果你的PHP代碼不能按預期工作,還可以幫助你進行調試。
[編輯] 顯然最重要的是要知道你正在使用的API。
如果您正在處理的服務具有WSDL,那麼當您創建對象時,PHP將自動爲您生成適當的方法。例如:
$client = new SoapClient("http://somedomain/stockquote.wsdl");
print($client->getStockQuote("MSFT"));
確實如此簡單。當然,這是一個相當簡單的例子。大多數SOAP服務(當然是我用過的!)需要比這個更多的參數,並且他們通常以巨大的嵌套數組結構的形式。
如果您的服務沒有WSDL,你必須調用使用一個稍微不同的方式方法:
$client = new SoapClient(null, array('location' => "http://somedomain/stockquote.asp"));
print($client->__soapCall('getStockQuote',"MSFT"));
希望幫助您瞭解它好一點。
我仍然建議您使用SOAP UI,因爲它可以幫助您更好地理解SOAP。您還應該明確閱讀PHP SOAP類手冊頁:http://php.net/manual/en/book.soap.php - 文檔非常全面,但所有這些東西都可能令人望而生畏,因爲它只是一個參考,而不是教程。
使用SOAP庫。我沒有在PHP中使用過自己,但很多使用我們的Web服務的人使用NuSOAP http://sourceforge.net/projects/nusoap/它應該爲你抽象所有複雜的東西。 – Rup 2010-11-16 16:42:25