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)


Anmelden zum Antworten