在Java中,如果它们具有相同的名称,是否可以在HttpURLConnection上查看多个响应头?
在Oracle documentation for "GetHeaderField"中,它声明:
如果在多次设置相同标头的连接上调用 可能有不同的值,只返回最后一个值。
我的问题是,如何查看多次设置的标题的所有不同值?
答案 0 :(得分:2)
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 &