Заголовки с несколькими ответами с одинаковым именем в Java

1

В Java, возможно ли просматривать несколько заголовков ответов в HttpURLConnection, если они имеют одно и то же имя?

В документации Oracle для "GetHeaderField" указано:

Если вы вызываете соединение, которое задает один и тот же заголовок несколько раз с возможно разными значениями, возвращается только последнее значение.

Мой вопрос: как просмотреть все разные значения для заголовка, установленного несколько раз?

Теги:
httpurlconnection

1 ответ

2

Использовать getHeaderFields

List<String> values = conn.getHeaderFields().get("X-Header-Of-Interest");

Полный пример

import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;

public class UrlConnectionTest {
    public static void main (String[] args) throws IOException {
        URL url = new URL("http://localhost:8888/");
        URLConnection conn = url.openConnection();
        conn.getContent(); // Force request
        System.out.println(conn.getHeaderFields().get("X-Funky-Header"));
    }
}

В Linux вы можете создать простой сервер с одним запросом с netcat для тестирования

$ echo -e 'HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nX-Funky-Header: value1\r\nX-Funky-Header: value2\r\n\r\nContent' | nc -l 8888 &
  • 0
    Я попробовал это, все еще не могу получить несколько значений, если один и тот же заголовок установлен дважды
  • 0
    С Java 1.6.0_13 на Linux это работает как шарм. Вы уверены, что сервер отправляет несколько заголовков.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню