通过java发送的请求缺少很少的HTTP标头

时间:2016-05-15 14:00:20

标签: java http http-headers

我在Java中编写了一个简单程序,它向URL发送HTTP GET请求,读取响应,并在控制台中显示该响应的标头。这是我的代码:

        URL url= new URL(textBox.getText());
        socket = new Socket(url.getAuthority(), DEFAULT_PORT);
        writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
        writer.println("GET "  + url.getFile() + " HTTP/1.1");
        writer.println("Host: " + url.getAuthority());
        writer.println("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:44.0) Gecko/20100101 Firefox/44.0");
        writer.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
      writer.println("");
        writer.flush();
        reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        for (String line; (line = reader.readLine()) != null;) {
            if (line.isEmpty()) break;
            response.append(line + "\n");
        }

网络服务器设置多个Cookie,但我的代码只显示前几个Set-cookie标题。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

为了加载网页,浏览器会发送一系列HTTP请求。您可能只通过Java代码发送第一个请求。如果通过某个Web浏览器发送相同的请求,它将呈现加载的页面并将触发进一步的HTTP请求。这些后续请求可能会设置剩余的cookie。

我建议您比较两个响应(通过Java代码和浏览器发送),您可以使用fiddler