gpt4 book ai didi

Java - DefaultHttpClient 和 "Host" header [Apache HttpComponent]

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:40:53 24 4
gpt4 key购买 nike

我正在通过 DefaultHttpClient 提交多个 HTTP 请求。问题是“主机” header 从未在请求​​中设置。例如通过执行以下 GET 请求:

HttpUriRequest request = new HttpGet("http://www.myapp.com");
org.apache.http.client.HttpClient client = new DefaultHttpClient();
HttpResponse httpResponse = client.execute(request);

生成的请求对象没有设置强制性的“主机” header 值:

Host: myapp.com

有什么建议吗?

最佳答案

我的错。实际上,DefaultHttpClient 会根据 HTTP 规范的要求添加 Host header 。

我的问题是由于我在其值以结尾之前添加的另一个自定义 header “\r\n”。这已使 DefaultHttpClient 自动添加的所有后续 header 无效。我在做类似的事情:

HttpUriRequest request = new HttpGet("http://www.myapp.com");
org.apache.http.client.HttpClient client = new DefaultHttpClient();
request.addHeader(new BasicHeader("X-Custom-Header", "Some Value\r\n");
HttpResponse httpResponse = client.execute(request);

在 HTTP 请求中生成了以下 Header 序列:

GET /index.html HTTP/1.1
X-Custom-Header: Some value

Host: www.example.com

X-Custom-HeaderHost 之间的空格使 Host header 无效。修复:

HttpUriRequest request = new HttpGet("http://www.myapp.com");
org.apache.http.client.HttpClient client = new DefaultHttpClient();
request.addHeader(new BasicHeader("X-Custom-Header", "Some Value");
HttpResponse httpResponse = client.execute(request);

生成:

GET /index.html HTTP/1.1
X-Custom-Header: Some value
Host: www.example.com

关于Java - DefaultHttpClient 和 "Host" header [Apache HttpComponent],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6884719/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com