通过套接字手动发送HTTP请求

当我通过套接字发送正常的HTTP请求" title="HTTP请求">HTTP请求时,服务器不会以OK响应进行响应。我从Firefox复制了HTTP标头。这是代码:

Socket s = new Socket(InetAddress.getByName("stackoverflow.com"), 80);

PrintWriter pw = new PrintWriter(s.getOutputStream());

pw.print("GET / HTTP/1.1");

pw.print("Host: stackoverflow.com");

pw.flush();

BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));

String t;

while((t = br.readLine()) != null) System.out.println(t);

br.close();

但是,这是我收到的回复:

HTTP/1.0 408 Request Time-out

Cache-Control: no-cache

Connection: close

Content-Type: text/html

<html><body><h1>408 Request Time-out</h1>

Your browser didn't send a complete request in time.

</body></html>

我知道我可以使用来做到这一点URL.openStream(),但是当我手动发送HTTP请求时,服务器为什么不识别HTTP请求?

回答:

两件事情:

  1. 您应该使用println而不是print将条目打印到单独的行。
  2. HTTP请求应以空白行(link)结尾。所以加pw.println("");

以上是 通过套接字手动发送HTTP请求 的全部内容, 来源链接: utcz.com/qa/403992.html

回到顶部