Java, HttpURLConnection and setting the content length

SK9 picture SK9 · Aug 15, 2011 · Viewed 20.7k times · Source

I'm setting the length of the content in my HttpURLConnection, for a PUT.

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

The actual number of bytes is 74. However, when I query the content length of urlConnection I'm returned -1. Why is that? And why are lengths not equal (given that I set this)?

I must set the content-length because I'm receiving a 411 response from the server.

(Also, in the Sun examples I've seen the second argument of setRequestProperty is of type int and not String, which seems odd.)

Answer

user207421 picture user207421 · Aug 15, 2011

You shouldn't set this header yourself. Use setFixedLengthStreamingMode() or setChunkedTransferMode().