Socket s;
try {
s = new Socket(InetAddress.getByName("stackoverflow.com"), 80);
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println("GET / HTTP/1.1");
pw.println("Host: stackoverflow.com");
pw.println();
pw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String t;
while((t = br.readLine()) != null)
System.out.println(t);
br.close();
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
我认为While循环中的问题但是我不知道如何在获取所有数据后停止它。
答案 0 :(得分:0)
我在这个问题中找到了答案。 https://stackoverflow.com/a/1577833/4028581
您的问题是内容编码“chunked”。当在响应开始时不知道从Web服务器请求的内容的长度时使用此方法。它基本上由发送的字节数组成,后跟CRLF,后跟字节。响应的结束由您看到的确切顺序发出信号。 Web服务器现在正在等待您的下一个请求(这也称为“请求管道传输”)。
您有几种可能性:
1-使用HTTP版本1.0。这将导致Web服务器在完全发送响应后自动关闭连接。
2-发送请求时指定“连接:关闭”标题。这也将关闭连接。
3-解析内容编码“chunked”正确并简单地将其视为响应现在已完成 - 它是什么。
作者:Bombe