我的错。实际上,根据 HTTP 规范的要求,DefaultHttpClient
do 添加了标头。Host
我的问题是由于我之前添加的另一个自定义标头,其值以“ \r\n
”结尾。这使所有后续自动添加的标头无效DefaultHttpClient
。我正在做类似的事情:
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-Header
和之间的空格Host
使Host
标题无效。固定:
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