HttpHeaders getFirst () нечувствительность к регистру - PullRequest
0 голосов
/ 07 сентября 2018

Я получаю заголовки HTTP с помощью Spring RestTemplate.

Заголовки HTTP нечувствительны к регистру , но документация для HttpHeaders , похоже, не подтверждает это.

Быстрый тест показывает, что все работает как положено ...

HttpHeaders headers = restTemplate.headForHeaders(url);
Long a = Long.parseLong(headers.getFirst("Content-Length"));
Long b = Long.parseLong(headers.getFirst("content-length"));
assert( a.equals(b) ); // passes

Могу ли я быть уверен, что этот тест пройдет при всех конфигурациях Spring?

1 Ответ

0 голосов
/ 07 сентября 2018

За этот коммит прямо указано, что HttpHeaders не чувствительны к регистру:

Обратите внимание, что HttpHeaders обычно обрабатывает имена заголовков без учета регистра.


Старый ответ

HttpHeaders имеет только один открытый конструктор и его тело:

public HttpHeaders() {
    this(new LinkedCaseInsensitiveMap<>(8, Locale.ENGLISH), false);
}

и в соответствии с LinkedCaseInsensitiveMap документами :

Вариант LinkedHashMap, в котором ключи String хранятся без учета регистра, например, для доступа на основе ключей в таблице результатов.

Сохраняет исходный порядок, а также оригинальный регистр ключей, , позволяя при этом содержать, получать и удалять вызовы с любым регистром ключей .

Так что да, он всегда работает без учета регистра.

Но почему вы не используете HttpHeaders # getContentLength () ? :

// no need to convert String to long
long contentLength = httpHeaders.getContentLength();
...