Content-Length标头已存在


问题内容

我正在使用Android中包含的Apache HttpClient(4.1)执行HttpPut。我已经验证我只有1个content-
length标题。但是,每次发送请求时,都会收到有关已指定的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标头已存在于org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor)上的org.apache.http.protocol.RequestContent.process(RequestContent.java:70)
.java:290)

有任何想法吗?


问题答案:

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