2012-09-26 124 views
2

我正在將數據從我的Android應用程序發送到作爲asp.net web api編寫的REST服務。我已經成功發送了諸如在http url中發送json字符串

http://www.deanblakely.com/REST/api/products/3的URL,並處理了web.api中的params。現在

,在Android客戶端我已經使用GSON到一個複雜的對象轉換爲JSON串和串如下:

[{「TSTAMP」:「2012年9月25日5點04分46秒PM「,」emailaddress「:」[email protected]「,」高度「:0.0,」緯度「:3.3743984E7,」經度「: - 1.18107841E8,」legnum「:1}]

我如何把這個json字符串放入url中?例如,我可以把它放在斜槓之間嗎?例如http://www.deanblakely.com/REST/api/objects/ {「TStamp」:「2012年9月25日下午5:04:46」,「emailaddress」:「[email protected]」,「高度」:0.0,「緯度」:3.3743984E7,「經度」: -1.18107841E8,「legnum」:1} ??

PS。我在web.api的所有方法都是Gets。我想保持這種方式,因爲它更簡單。如果你懷疑這個策略請參見:http://forums.asp.net/t/1843826.aspx/1?Web+api+CRUD+Operations

感謝,院長

回答

3

對於RESTful網絡的API,a get應在服務器上not modify state或資源。

將PARAMS放入查詢字符串URL通常是爲REST資源的GET請求完成的。

正如你可以看到你的問題一樣,通過GET來做所有事情並不簡單。當您試圖通過查詢字符串發佈更復雜的對象和圖表時,這不是典型的,並且引入了許多問題,而查詢字符串更適合作爲GET的過濾器選項。

如果您要將類似於此類的對象的JSON表示發送到服務器Web api,則通常會執行創建或更新。將它序列化爲JSON並將其放置在主體中更容易。

如果您正在創建資源,請執行POST並將JSON對象放在請求的正文中。

如果你正在做一個更新(可能因爲你有/ 3),然後對該url執行POST,PUT或PATCH請求並將json對象放入正文中。 PUT意味着完全替代資源,而不是作爲部分更新的PATCH。

由於您使用的是ASP.net web api,因此您可以通過使用CRUD操作來了解它。通過它與小提琴手運行轉至:

http://www.asp.net/web-api/overview/creating-web-apis/creating-a-web-api-that-supports-crud-operations

+0

我的問題是:「我怎樣才能把一個JSON字符串中的HTTP URL。」你可以回答這個問題嗎?我有一段時間得到答案。這裏的答案很有意思,與我的其他帖子有關:http://forums.asp.net/t/1843826.aspx/1?Web+api+CRUD+Operations。在一個瘋狂的世界中,獲得,放置和發佈的世界更加複雜。我正在鏡像我的WCF服務,可以在一次調用中完成所有這些工作。 –

+0

你很難得到答案的原因是它不是正確的方式去關於REST服務,並最終成爲問題(最大URL長度,編碼數據等)。正確的方法是在結構體中傳遞結構化的REST數據。 – bryanmac

+0

我現在知道如何做,例如,在其實體參數中帶有json字符串的帖子。如果我的asp.net web api可以從該帖子返回另一個json字符串,那麼我可以使用post來完成所有事情。我想要做的就是傳遞大量複雜數據並獲取大量複雜數據。你認爲這篇文章會這樣做嗎?謝謝 –