cs_nanano7
Messages postés9Date d'inscriptiondimanche 17 décembre 2006StatutMembreDernière intervention23 mai 2008
-
17 avril 2008 à 13:29
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010
-
17 avril 2008 à 14:43
Bonjour tous le monde
j'ai troué un petit programme de proxy http en java, mais ne retourne pas la résultat, il retourne juste la reponse de l'en-tête http, voici le programme :
public OneServeur(Socket s) throws IOException {
socket = s;
fromBrowser = new BufferedReader(
new InputStreamReader (
socket.getInputStream()));
toBrowser = new PrintWriter( new BufferedWriter (
new OutputStreamWriter (
socket.getOutputStream())),true);
start();
}
public void run() {
try {
String str, targetHost="", httpHeader="";
while(true) {
str = fromBrowser.readLine();
httpHeader += str + "\n";
if ( str.startsWith("Host: " ) ) targetHost = str.substring(6);
if ( str.length() == 0 ) break;
}
//socketToWeb = new Socket(InetAddress.getByName(targetHost),80);
socketToWeb = new Socket(
InetAddress.getByName(targetHost),80);
System.out.println(socketToWeb);
fromWeb = new BufferedReader(
new InputStreamReader (
socketToWeb.getInputStream()));
toWeb = new PrintWriter( new BufferedWriter (
new OutputStreamWriter (
socketToWeb.getOutputStream())),true);
System.out.println("-> -> -> -> -> -> -> \n" + httpHeader);
toWeb.println(httpHeader);
boolean echoing = true;
while ( true ) {
str = fromWeb.readLine();
if ( str == null ) break; if ( str.length() 0 ) echoing false;
if( echoing ) System.out.println(str);
toBrowser.write(str);
}
System.out.println("\nclosing ...");
} catch ( IOException e) {
} finally {
try {
socket.close();
} catch ( IOException e ) {}
}
}
}
------------------------------------------------
voici le resultat qui m'a donner :
cs_Kysic
Messages postés332Date d'inscriptionmardi 12 juillet 2005StatutMembreDernière intervention17 juillet 2010 17 avril 2008 à 14:43
Salut,
il n'affiche que l'entête mais il est sensé envoyé au navigateur tout le contenu.
c'est :
if ( str.length() 0 ) echoing false;
if( echoing ) System.out.println(str);
qui détecte la fin de l'entête et n'affiche plus après.
Cela dit si tu affiche le reste quand tu te connecte à google ça risque de pas être très lisible puisque comme tu indique accepter que se soit compresser ("Accept-Encoding: gzip,deflate") google va t'envoyer du compresser ("Content-Encoding: gzip").