Ken
Ken

Reputation: 31161

Java, HttpURLConnection and setting the content length

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.)

Upvotes: 14

Views: 27375

Answers (2)

Nicolas Modrzyk
Nicolas Modrzyk

Reputation: 14197

Also do not forget to add a setDoOutput to tell your connection you are going to send data.

Upvotes: 3

user207421
user207421

Reputation: 310913

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

Upvotes: 27

Related Questions