2013-10-11 28 views
2

我試圖創建一個具有以下後...的Android HttpClient的問題設置的Content-Length

HttpPost httppost = new HttpPost(URL); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
httppost.setHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE); 
String length = String.valueOf(httppost.getEntity().getContentLength()); 
httppost.setHeader(HTTP.CONTENT_LEN, length); //If commented out it works 

但是當我嘗試運行我得到以下錯誤的請求......

10-11 22:05:02.940:W/System.err的(4203):org.apache.http.client.ClientProtocolException

我猜這是因爲內容長度是錯誤的。

回答

4

Apache HttpClient(即使是與Android一起提供的fork)總是基於所包含的HTTP實體的屬性計算內容長度。一個不需要(也不應該)手動設置Content-LengthTransfer-Encoding標題。

+0

好的謝謝猜測,這意味着我的發佈請求不起作用的另一個原因。這是記錄在某處嗎?這可能有助於未來的搜索者。 – Jackie

+0

@oleg +1當我在httpPost的頭部設置它時,我的應用程序崩潰。你能帶我到HTTPclient,java這樣做嗎? –

+0

@EvolGate雖然沒有編譯列表,但我認爲這將是對該項目的巨大貢獻。大多數這樣的細節可以在http://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/index.html教程中找到。 – oleg