2016-05-15 84 views
0

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

 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"); 
     } 

Web服务器设置多个cookie,但我的代码只显示前几个Set-cookie头。

我在做什么错?

回答

0

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

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

+0

好吧,我检查使用HttpFox的Firefox和一些网络服务器之间的流量,你是对的....谢谢你 –