http request mit sockets
-
Socket s = new Socket("81.169.145.74",80); PrintWriter w = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream())); String get = "GET /index.php HTTP/1.1"; w.write(get); System.out.println(r.read());
wieso liefert mir der Server keine Antwort?
Ist mein request zu minimal?Ich weiss, das es JavaKlassen zum HTTP-Verkehr gibt!
Danke
-
Hat sich geklärt!
Socket s = new Socket("81.169.145.74",80); PrintWriter w = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); BufferedReader r = new BufferedReader(new InputStreamReader(s.getInputStream())); w.println("GET /index.html HTTP/1.1"); w.println("Host: www.michihiebl.de:80"); w.println(); w.flush(); for ( String l = r.readLine(); l != null; l = r.readLine() ) System.out.println(l);
Der Host:... muss anscheinend auch noch mitgegeben werden, das
Apache richtig antwortet.
Ausserdem darf ich nicht den return-value von read() ausgeben sondern
von readLine
-
Naja an dem Host dürfte das aber nicht liegen.
Bei deinem Original-Code hat nämlich eben die Extra-Leerzeile (also \n\r) am Ende gefehlt die unbedingt rein muss. Und jede Zeile im Protokoll muss ebend auch mit CR und LF abgeschlossen werden
-
doch apache braucht den Host, hab mich damit selber auch schon auf die nase gelegt (eigener proxy)