Hallo,
ich versuche gerade einen HTTP-Response eines Server mittels Java an einen Browser zu schicken, doch ich denke mal das es am Encoding scheitert.
Das Java-Programm funktioniert als Proxy und empfängt den Request vom Browser, öffnet einen Socket und schickt es an den Server. Den Request wie auch den Response speichere ich einem char[].
Ich hatte da ebenfalls mit Strings versucht, aber Java formatiert die String dann für eine bestimmte Codierung. Habt ihr eine Idee wie ich nun diese Response (HTTP-Header und Body) vom Server erhalten kann und dann an den Client weiterleiten kann?
Später sollen die Daten noch verschlüsselt werden. Das funktioniert auch schon für ein auf Strings-basierten Datenformat.
vg iggi
Der Code ist nur testweise aus dem eigentlichen Programm extrahiert.
P.S.: Ich denke ich brauche eine Datenstruktur, wo ich sowohl die normalen Strings vom header und die Binärdaten vom body aufnehmen kann? Byte,Char,Int ich weiß leider nicht welchen...
ich versuche gerade einen HTTP-Response eines Server mittels Java an einen Browser zu schicken, doch ich denke mal das es am Encoding scheitert.
Das Java-Programm funktioniert als Proxy und empfängt den Request vom Browser, öffnet einen Socket und schickt es an den Server. Den Request wie auch den Response speichere ich einem char[].
Ich hatte da ebenfalls mit Strings versucht, aber Java formatiert die String dann für eine bestimmte Codierung. Habt ihr eine Idee wie ich nun diese Response (HTTP-Header und Body) vom Server erhalten kann und dann an den Client weiterleiten kann?
Später sollen die Daten noch verschlüsselt werden. Das funktioniert auch schon für ein auf Strings-basierten Datenformat.
vg iggi
Der Code ist nur testweise aus dem eigentlichen Programm extrahiert.
Java:
char[] charArray = new char[2048];
char[] charArrayFromServer = new char[2048];
Socket client = so.accept();
InputStreamReader is = new InputStreamReader(client
.getInputStream());
PrintWriter toBrowser = new PrintWriter(client
.getOutputStream());
InetAddress addr = InetAddress.getByName("www.google.de");
System.out.println("ip:" + addr.getHostAddress());
Socket toServer = new Socket(addr.getHostAddress(), 80);
PrintWriter toServerOut = new PrintWriter(toServer
.getOutputStream());
InputStreamReader isServer = new InputStreamReader(toServer
.getInputStream());
int i;
int count = 0;
is.read(charArray);
toServerOut.flush();
isServer.read(charArrayFromServer);
toBrowser.print(charArrayFromServer);
toBrowser.flush();
P.S.: Ich denke ich brauche eine Datenstruktur, wo ich sowohl die normalen Strings vom header und die Binärdaten vom body aufnehmen kann? Byte,Char,Int ich weiß leider nicht welchen...
Zuletzt bearbeitet: