2016-04-26 59 views
0

比方說,我正在做下面的HTTP請求,以更新的MongoDB數據庫中的一些記錄:如何在http請求中發送JSON數據?

PUT
http://dev.mycompany.co/ping
{ 「ID」:4432, 「名」: 「李四」,「產品「:[{」id「:287},{」id「:434}]}

請注意,上面的JSON的」products「屬性中有兩個對象的數組。我有通過這種通用格式發送的數據,無論是通過Fiddler還是通過我寫的一個ruby腳本。

當通過Fiddler發送時,JSON中的數據被正確解析並更新到我的數據庫中。當通過我的ruby腳本發送時,JSON中的數據是而不是正確解析。我一直在試圖弄清楚爲什麼會這樣。現在,我想知道當一個JSON與一個http請求一起發送時,實際上如何發送數據。有人能指引我朝着正確的方向嗎?

+0

一個猜測:你的Ruby腳本可以發送不同的套頭(也許認證,授權,或'內容Type') –

+0

它被作爲在HTTP請求的身體JSON文本。你遇到了什麼錯誤?把Fiddler放在你的ruby腳本和服務器之間,這樣你就可以攔截ruby腳本正在做的請求。 –

+0

@AaronBrager有沒有辦法找出我的Ruby腳本正在發送什麼標題? – Max

回答

0

在問了關於SO的其他一些問題並做了更多的研究之後,我得出了以下結論。

問:如何在http請求中發送JSON數據?

答:這取決於你如何在請求發送JSON數據(什麼是內容類型

我遇到了JSON數據傳送兩種方式。

  1. 內容使用類型應用/ JSON

    利用這種內容類型發送,JSON數據被髮送字面上原樣。文字JSON數據作爲字符串存儲並與請求一起發送。如果你的JSON是複雜的,嵌套的對象和數組等,這可能是你想要的。有關使用Ruby的Net/HTTP發送嵌套JSON的工作示例,請參閱this SO question I asked上的答案。

  2. 使用內容類型發送X WWW的形式,進行了urlencoded

    這是怎麼了紅寶石的淨/ HTTP請求通常被髮送出去。這些請求的形式類似於:id = 343?entity = Microsoft?foo = bar。這種內容類型很好,直到你有一個複雜的JSON。

相關問題