Когда происходит перенаправление HTTP, apache HttpClient возвращает заголовок из первого ответа, а не из последнего ответа - PullRequest
2 голосов
/ 20 июня 2019

Это моя Java-программа

private static final String SAMPLE_URL = "https://www.dropbox.com/s/<something>/test_out4.mp4";

public static void main(String[] args) throws IOException, URISyntaxException {
    HttpClient client = HttpClientBuilder.create().build();
    HttpHead request = new HttpHead(new URI(SAMPLE_URL));
    HttpResponse response = client.execute(request);
    System.out.println(response.getStatusLine());
    for (Header header : response.getAllHeaders()) {
        System.out.println(header.getName() + ": " + header.getValue());
    }
}

См. Фрагмент вывода программы Java. Строка состояния говорит, что это HTTP / 1.1 200 OK. Однако напечатанные поля заголовка не соответствуют тому, что я получаю, когда запускаю curl вручную. Кажется, что значения заголовка взяты из первого ответа, а не из последнего ответа. Еще более важное поле Content Length, которое присутствует в последнем ответе, не устанавливает структуру ответа.

HTTP/1.1 200 OK <<< Status is 200 Server: nginx Date: Thu, 20 Jun 2019 02:22:58 GMT Content-Type: text/html; charset=utf-8 << Content type is char

Когда я запускаю curl, вывод правильный. Есть ли какие-либо настройки в HttpClient для возврата самых последних заголовков?

curl -I https://www.dropbox.com/s/<something>/test_out4.mp4 HTTP/1.1 301 Moved Permanently <<< Status 301 Server: nginx Date: Thu, 20 Jun 2019 02:20:50 GMT Content-Type: text/html; charset=utf-8 <<< Content type text Connection: keep-alive

....

HTTP/1.1 302 Found << second redirect Server: nginx Date: Thu, 20 Jun 2019 02:36:03 GMT Content-Type: text/html; charset=utf-8

....

HTTP/1.1 200 OK <<< Status finally 200 Server: nginx Date: Thu, 20 Jun 2019 02:36:04 GMT Content-Type: video/mp4 << content type correct Content-Length: 92894175 << length correct Connection: keep-alive

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...