的Java HTTP - 发布标题内容长度(Java Http - Post Header Con

2019-10-30 05:03发布

我和我的HTTP报头的问题。 我需要发送一个空的身体和头文件“的Content-Length:0”后请求。 但是,这似乎是不可能的,becauce我得到这个异常:

--org.apache.http.ProtocolException:Content-Length头已经present--

但是,当我不包括头,有在请求没有Content-Length头,所以我得到400:错误的请求。 我在Python建立这也有它工作正常,但我不能让它在Java的工作。 你能帮我吗?

这是我的代码:

HttpClient client = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(header..);
httpPost.addHeader(another header);
httpPost.addHeader("Content-Type","application/xml");
httpPost.addHeader("Content-Length","0");
httpPost.addHeader(another header);
HttpResponse response = client.execute(httpPost);
System.out.println(response.getStatusLine().getStatusCode());

编辑:

从@Beno Arakelyan的答案解决了这个问题。

Answer 1:

我试图发送Content-Length与HTTP请求其内置的Apache HTTP客户端上。 它工作正常。 例:

private static final HttpRequest<?> HTTP_REQUEST =
      HttpRequestBuilder.createGet(YOUR_URI)
        .addDefaultHeader(HttpHeaders.CONTENT_LENGTH, "0")
        .build();

public void test(){
  System.out.println(HTTP_REQUEST.execute().getStatisCode()); // is 200
}


Answer 2:

你并不需要计算的内容长度,客户端会处理,对于你。 尝试去除报头,并设置一个机构代替,例如: httpPost.setEntity(new StringEntity(""))



文章来源: Java Http - Post Header Content-Length
标签: java http