我正在使用 Android 中包含的 Apache HttpClient (4.1) 来执行 HttpPut。我已验证我只有 1 个内容长度标头。但是,每次发送请求时,我都会收到有关已指定的 Content-Length 标头的协议异常。
HttpClient client = new DefaultHttpClient();
putMethod = new HttpPut(url + encodedFileName);
putMethod.addHeader(..) //<-once for each header
putMethod.setEntity(new ByteArrayEntity(data));
client.execute(putMethod); //throws Exception
由以下原因引起:org.apache.http.ProtocolException:Content-Length header already present at org.apache.http.protocol.RequestContent.process(RequestContent.java:70) at org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor .java:290)
有任何想法吗?
原文由 AdamC 发布,翻译遵循 CC BY-SA 4.0 许可协议
我自己没有使用过 HttpClient,但我怀疑问题在于
putMethod.setEntity(...)
隐式提供了内容长度,并且您还通过putMethod.addHeader(...)
调用之一显式设置了它。