Java中具有相同名称的多个响应标头

时间:2014-03-13 20:50:34

标签: java httpurlconnection

在Java中,如果它们具有相同的名称,是否可以在HttpURLConnection上查看多个响应头?

Oracle documentation for "GetHeaderField"中,它声明:

  

如果在多次设置相同标头的连接上调用   可能有不同的值,只返回最后一个值。

我的问题是,如何查看多次设置的标题的所有不同值?

1 个答案:

答案 0 :(得分: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 &