2012-09-26 37 views
1

我的客戶端是一個Android應用程序,我的服務是一個asp.net web api。我是唯一使用我的服務的人。我試圖在Android-REST世界中複製我已經在Microsoft Windows Phone 7/WCF SOAP世界中做的事情。我有很多方法都接收復雜的對象並返回複雜的對象。使用REST發送和接收復雜數據

WCF-SOAP世界很簡單。您可以傳遞您想要的任何複雜參數,並返回您想要的任何複雜結果。從邏輯上講,這只是一個遠程過程調用。

但是,當我發佈有關在REST中執行相同操作的問題時,我被告知應該將我的服務僅限於GET,PUT,POST和DELETE。而且我應該只根據RFC2616做什麼是「正確的」。有些人幾乎用一種宗教的方式來談論這一點。

僞造宗教信仰,對一切都使用GET有什麼問題?或者對所有東西都使用POST有什麼問題?我所做的不屬於簡單的RFC2616類別。例如,我正在通過一輛在汽車上旅行的一千條腿,並且我得到了另一個版本的旅行,其中出現了不穩定的GPS錯誤。或者,我用英語發送一個對話,然後用德語回覆對話。

在Android客戶端中,我希望通過HTTP發送的對象已通過使用Google-GSON序列化爲json字符串。所以我的問題是...

如何將這些json字符串作爲GET或POST的參數發送到我的REST服務?

對我所有的REST服務調用使用所有GET(或所有POST)是否可行和可行?我該怎麼做?

我對sending a json string in a http url發佈了更實用的問題,因爲我無法通過http GET或POST發送json字符串的任何地方找到任何示例。

謝謝,加里

回答

1

使用好HTTP動詞是非常有用簡單地知道,當你請求失敗(例如),或者只是做一些具體的東西做什麼。如果您發送POST請求,則隱含地假設您必須解析資源才能獲取通過請求正文發送的流。另一方面,當您通過GET檢索數據時,假設請求將作爲流映射到您的模型,pojo或其他任何內容發送給您。我建議你使用庫如RESTDroid。您可以發送POJO並接收POJO。這是一個「資源導向型」庫,因此您可以隨時知道某個特定本地資源是否已遠程同步。本地和遠程之間的數據持久性是自動處理的。

RESTDroid是alpha發佈。你可以看看RoboSpice。它是管理REST呼叫的強大庫,但是由您來管理本地和遠程資源之間的持久性。

0

1)WCF-SOAP世界很簡單。您可以傳遞您想要的任何複雜參數,並返回您想要的任何複雜結果。從邏輯上講,這只是一個遠程過程調用。 - IN REST:「你可以傳遞你想要的任何複雜的參數,並返回你想要的任何複雜結果。

2a)僞造宗教信仰,對一切都使用GET有什麼問題? 在SOAP服務WCF /或古典中,您將所有請求包裝到http POST中,因此使用單個動詞將最終達到SOAP或 - 甚至不考慮它 - 您自己的通信協議:-D

2b)您可以技術上組成與非空身上GET請求 - 大多數服務器在默認情況下忽略它,雖然它在技術上是有問題的讀它..

問題的另一部分被Pcriulan上述

回答