2011-08-25 104 views
5

我需要消耗一些.NET asmx web服務,這些服務目前在某些網站中實現。我需要創建一個應用程序,以與webpsite相同的方式使用這些web服務。有兩個問題。首先,我沒有關於這些webservice方法(調用,使用的格式等)的規範。其次,我只需構建一個應用程序,該應用程序使用JSON框架從使用API​​的Flick獲取JSON數據。我想這是使用REST的webservices :)我明白,爲了執行帖子/獲取到服務器,我需要構造一個請求字符串,然後將其傳遞給Web服務器,獲取結果,解析它們(XML或JSON)和然後查看它們。所以,我不知道如何識別當前網站的網絡服務格式。我查看了該網站的來源,看到了一大堆Javascript代碼文件,這些文件正在做很多神祕的檢查,驗證等工作。那麼,如何識別正確的格式呢?如何區分是SOAP還是REST webservice?

回答

6

如果它是.NET ASMX服務,那麼它總是SOAP。通過HTTP公開的SOAP服務將始終使用HTTP POST方法進行通信。它還應該公開一個.wsdl文件,以供您使用並生成客戶端代碼,因此您不必擔心使用JSON框架或將自己的HTTP請求編排到該Web服務中......您生成的Objective-C客戶應該爲你照顧。

This question seems to have the answers you need for doing this in Objective-C.

+0

我試圖用firefox螢火蟲查看更多信息。跟蹤請求後,我看到請求是通過以下鏈接進行的:http://www.website.com/GetQuote.aspx?units=1&len=1&width=1&height=1&weight=1&type=1&qty=1&cnt=GB&postcode=as123它看起來像REST webservice。 – Centurion

2

由於@whaley他回答說,它看起來像你和一個SOAP服務處理在這裏。瞭解這一點可以讓您朝着正確的方向邁出一步,但如果您想與之交互,則需要做的不僅僅是這些。您需要知道它支持的SOAP操作的細節,請求和響應消息的XML模式等。如果您能夠找到WSDL文件,它應該爲您提供所有這些信息。

如果您無法追查到WSDL文件(有些服務不喜歡因各種原因而變得簡單),那麼您仍然可以弄清楚。如果網站真正使用SOAP接口進行交互,那麼您可以使用任意數量的工具查看瀏覽器發出的請求。在Safari中,啓用開發人員工具菜單,然後顯示Web檢查器。你可以看到HTTP請求的細節,看看發生了什麼。 Firefox有Firebug插件可以做同樣的事情。每個瀏覽器都有自己的開發者工具,但是你必須爲瀏覽器找到合適的工具。

警告詞:經常與您的後端服務交互的網頁實際上並不直接使用SOAP服務。它可能正在使用備用和非公用接口來進行所需的呼叫。如果你看看你的瀏覽器發出的請求,它看起來像一個SOAP消息(很多SoapEnvenlope元素具有不同的請求/響應XML),那麼假設你可以從objective-c複製這些SOAP消息是非常安全的。如果不是,那麼除非您可以追蹤WSDL文件,否則您可能會走運。