2011-08-15 94 views
12

我在HttpURLConnection中爲PUT設置了內容的長度。Java,HttpURLConnection並設置內容長度

urlConnection.setRequestProperty("Content-Length", "" + responseJSONArray.toString(2).getBytes("UTF8").length); 

字節的實際數量是74。然而,當我查詢的urlConnection內容長度我返回-1。這是爲什麼?爲什麼長度不相等(因爲我設定了這個)?

我必須設置內容長度,因爲我收到來自服務器的411響應。

(而且,在陽光下examples我見過的setRequestProperty第二個參數是int型的,而不是String,這似乎很奇怪。)

+0

我回答了這個問題,現在我意識到它有一個android標籤。我不知道Google如何實現'HttpURLConnection'。 –

+0

@精英紳士他們不得不同意現有的Javadoc規範,並且您的誤解與實現之間的可能差異沒有任何關係。 – EJP

回答

19

你不應該爲自己設定這個頭。使用setFixedLengthStreamingMode()setChunkedTransferMode()

+0

謝謝。我仍然不明白:我現在在做'urlConnection.setFixedLengthStreamingMode(responseJSONArray.toString(2).getBytes(「UTF8」)。length);'。體長是74字節,但是當我調用Log.v(「app」,「」+ urlConnection.getContentLength());''我看到'-1'。這是爲什麼? – SK9

+1

@ SK9這是*響應的長度。* – EJP

+0

謝謝。這對我來說似乎是不必要的模棱兩可! – SK9

2

另外不要忘了添加一個setDoOutput來告訴你的連接你要發送數據。

+0

謝謝。我已經(使用'urlConnection.setDoOutput(true);')。 – SK9

+0

它應該是-1,因爲你發送的數據沒有從服務器獲取一些。 getContentLenght():「返回由響應標頭字段content-length指定的字節長度,如果未設置此字段,則返回-1。」 從[Android Javadoc for HttpURLConnection](http://developer.android.com/reference/java/net/HttpURLConnection.html) –

+1

嗯 - 我認爲內容長度字段指定的HTTP請求的字節長度我是準備。 – SK9

相關問題