我在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
标题。
我做错了什么?
答案 0 :(得分:0)
为了加载网页,浏览器会发送一系列HTTP请求。您可能只通过Java代码发送第一个请求。如果通过某个Web浏览器发送相同的请求,它将呈现加载的页面并将触发进一步的HTTP请求。这些后续请求可能会设置剩余的cookie。
我建议您比较两个响应(通过Java代码和浏览器发送),您可以使用fiddler。