# HTTP-Anfrage an einen Server wird nicht beantwortet



## kernel (13. Sep 2009)

Hallo,

ich versuche eine Proxyanwendung zu schreiben, um verschiedene Inhalte (etwa Flash) herauszufiltern. Bevor ich jedoch irgendwas filtern kann, muss dass Durchschleusen funktionieren.


```
private static void handleConnection( Socket client ) throws IOException { 
	    InputStream in = client.getInputStream();
	    OutputStream out = client.getOutputStream();
	    String itbu = "";
	    byte read = (byte) in.read();
	    while(in.available()>0 && -1 < read){
	    	itbu = itbu + String.valueOf(Character.toChars(read)[0]);
	    	read = (byte) in.read();
	    }
	    Socket realserv = new Socket(getDest(itbu),80);
	    InputStream servin = realserv.getInputStream();
	    OutputStream servout = realserv.getOutputStream();
	    Scanner sin = new Scanner(realserv.getInputStream());
	    byte[] write = itbu.getBytes();
	    for(int i=0; i<write.length; i++)
	    	servout.write(write[i]);
	    servout.flush();
	    String serva = "";
	    byte r = (byte) servin.read();
	    while(servin.available()>0 && -1 < r){
	    	serva = serva + String.valueOf(Character.toChars(r)[0]);
	    	r = (byte) servin.read();
	    }
            //Ab hier tut sich nichts mehr.
	    System.out.print(serva);
	    write = serva.getBytes();
	    for(int i=0; i<write.length; i++)
	    	out.write(write[i]);
	  }
```

Die Funktion "getDest" liest den "Host" des HTTP-Pakets aus.

Sieht jemand vlt meinen Fehler?

grtz
michi


----------



## Gelöschtes Mitglied 5909 (13. Sep 2009)

ich seh da kein HTTP Request.

siehe auch 2 posts unter deinem:

Sending a POST Request Using a URL (Java Developers Almanac Example)


----------



## kernel (13. Sep 2009)

naja, ich hab gemeint, der Browser generiert den Http-Request (Landet -erfolgreich- in "itbu"), sodass ich nur noch das Paket weiterleiten muss.

Muss ich also alle Daten aus dem Paket auslesen und dann ein neues Paket generieren?


----------



## toni3 (14. Sep 2009)

Hallo,

um das Packet auszulesen musste du HTTP aufparsen. D.h. du must auch so Sachen wie Content-Length oder Transfer-Encoding: chunked behandeln. 

Alternativ kannst du deine Proxyanwedung auf Frameworks wie xLightweb aufsetzen. Siehe xLightweb oder SourceForge.net Repository - [xlightweb] View of /xlightweb/sandbox/HttpProxy/trunk/src/main/java/org/xlightweb/httpproxy/HttpProxy.java


----------

