13

我正在为 PUT 设置 HttpURLConnection 中内容的长度。

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

实际字节数为 74。但是,当我查询urlConnectionI'm returned的内容长度时-1。这是为什么?为什么长度不相等(鉴于我设置了这个)?

我必须设置内容长度,因为我正在接收411来自服务器的响应。

(此外,在 Sun 的示例中,我看到了setRequestPropertyis 类型int和 not的第二个参数String,这看起来很奇怪。)

4

3 回答 3

24

您不应该自己设置此标头。使用setFixedLengthStreamingMode()setChunkedTransferMode()

于 2011-08-15T07:05:54.957 回答
2

另外不要忘记添加一个setDoOutput来告诉您的连接您将要发送数据。

于 2011-08-15T07:13:34.653 回答
-2

我收到与“内容长度”相同的错误 -

        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
于 2018-08-27T16:06:14.953 回答