我在HttpURLConnection中为PUT设置内容的长度。
urlConnection.setRequestProperty("Content-Length", "" + responseJSONArray.toString(2).getBytes("UTF8").length);
实际的字节数是74.但是,当我查询urlConnection
的内容长度时,我返回-1
。这是为什么?为什么长度不相等(假设我设定了这个)?
我必须设置内容长度,因为我从服务器收到411
响应。
(另外,在太阳examples我看到setRequestProperty
的第二个参数属于int
而不是String
,这似乎很奇怪。)
答案 0 :(得分:20)
您不应自行设置此标题。使用setFixedLengthStreamingMode()
或setChunkedTransferMode()
。
答案 1 :(得分:2)
另外,请不要忘记添加setDoOutput来告诉您要发送数据的连接。
答案 2 :(得分:0)
“ Content-Length”出现相同的错误-
URL url = new URL(targetURL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "text/plain");
connection.setRequestProperty("Authorization", authKey);
connection.setRequestProperty("Content-Length", Integer.toString(requestJSON.getBytes().length));
最后我推断出发生这种情况是因为Json对象字段之一包含变音字符。
someCategory = "Ţepuşă";
try {
JSONObject postData = new JSONObject();
postData.put("category", someCategory);
.....
这就是错误的样子:
08-27 18:57:07.842 24263-24263/ro.nexuserp.documentecontabile E/Eror: content-length promised 491001 bytes, but received 491000