2010-11-16 101 views
5

我已經使用映射組件創建了一個Web應用程序。我想使用除谷歌以外的其他地理編碼服務,但所有我發現使用SOAP與網站進行通信。我以前從來沒有用肥皂。有誰知道有什麼好的資源可以幫我解決這個問題嗎?我使用PHP集成來構建Web應用程序如何學習SOAP?

編輯:我現在需要使用Soap進行地理編碼...所以如果您也知道任何良好的服務,那就太棒了。

再次編輯:基本上,我需要學習的肥皂,所以我可以用http://www.nn4d.com/site/global/build/web_services/geocoding_reversegeocoding/map24geocoder51service/map24geocoder51service.jsp

+0

使用SOAP庫。我沒有在PHP中使用過自己,但很多使用我們的Web服務的人使用NuSOAP http://sourceforge.net/projects/nusoap/它應該爲你抽象所有複雜的東西。 – Rup 2010-11-16 16:42:25

回答

17

學習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 - 文檔非常全面,但所有這些東西都可能令人望而生畏,因爲它只是一個參考,而不是教程。

+0

感謝您的幫助。我編輯了這篇文章,以顯示我需要學習肥皂。我想與一個特定的api進行交互(儘管一般情況下學習會很好)根據我所知,這些服務從網站收到請求,並且看起來他們發送了一個xml/soap文件...我不知道真的不知道,我還是要弄清楚。 – Bill 2010-11-16 19:04:02

+1

@菲爾 - 我會在我的回答中加入一點,以幫助更多。 – Spudley 2010-11-16 19:34:34

+0

太棒了...感謝您的幫助! – Bill 2010-11-16 19:38:18

1

隨着這裏其他的答案,我發現我最好的學習如何使用SOAPUI瞭解到SOAP:

http://www.soapui.org/

這是一個用於調試你的soap接口的很棒的應用程序,並幫助我試圖弄清楚我的PHP調用中發生了什麼。