2010-07-08 112 views
3

我發送一個http請求到google reader api並獲得一個不尋常的響應代碼。在文檔之後,我請求了一個認證代碼並將其包含在每個請求的頭部。進行登錄,並得到一個授權碼後,我試圖訪問這個URL,這是文件的一部分:HTTP響應411需要的長度,Http客戶端4.0.1 Android

http://www.google.com/reader/api/0/stream/items/contents

當我發送請求,我得到一個411個狀態碼,這是爲了意思是「需要的長度」。正如我發現的,長度應該是消息體的長度,以八位字節爲單位。此請求中沒有消息正文。只有一個標題,POST參數i =「item id」和URL本身。我試着將「Content-Length」標題設置爲「0」,並將「-1」設置爲無效。

真正有趣的是,在谷歌改變授權程序之前,這個相同的代碼工作正常。很明顯他們已經改變了別的東西...

所以我的問題是什麼確切會導致411響應代碼,我該如何防止它?

回答

2

這個錯誤只發生在POST和PUT請求類型中,因爲這兩個(有點)期望有一個包含請求參數(純文本以及附件)的請求主體。

但是正如文檔所示,這在很大程度上是一個過時的值,而實際上,Web服務應該在不依賴Content-Length的情況下處理請求。

所以這不是請求發送者的問題,但它是(我會說)在服務端的錯誤。

儘管如此,將Content-Length(請注意適當的大寫字母)請求標頭設置爲0應該是解決方法。

+0

我得到'GET'錯誤:411' GET'請求。我正在請求從Python腳本服務器到我的django服務器。所以,這不僅僅是'POST'和'PUT' – 2016-07-10 15:08:41