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(...)
调用之一来显式设置它。