我正在使用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/