我正在使用Android中包含的Apache HttpClient(4.1)执行HttpPut。我已经验证我只有1个content-length标题。但是,每次发送请求时,都会收到有关已指定的Content-Length header 的协议(protocol)异常。

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 已存在
在org.apache.http.protocol.RequestContent.process(RequestContent.java:70)
在org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor.java:290)

有任何想法吗?

最佳答案

我自己没有使用过HttpClient,但是我怀疑问题是putMethod.setEntity(...)隐式提供了内容长度,并且您也通过putMethod.addHeader(...)调用之一明确设置了该内容长度。

关于java - Content-Length header 已存在,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3332370/

10-10 15:06