HTTP-Anfrage manuell über Socket senden

Wenn ich eine normale HTTP-Anfrage über einen Socket sende, antwortet der Server nicht mit einer OK-Antwort. Ich habe den HTTP-Header von FireFox kopiert. Hier ist der Code:

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();

Hier ist jedoch die Antwort, die ich erhalten habe:

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>

Ich weiß, dass ich dies mit tun kannURL.openStream(), aber warum erkennt der Server die HTTP-Anfrage nicht, wenn ich sie manuell sende?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage