Моя вина.На самом деле DefaultHttpClient
добавляет заголовок Host
, как того требует спецификация HTTP.
Моя проблема была связана с другим настраиваемым заголовком, который я добавлял до того, значение которого заканчивалось на "\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-запросе:
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