No requet!!! why?????

iscalibar
Messages postés
15
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
27 mars 2009
- 1 sept. 2007 à 10:42
iscalibar
Messages postés
15
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
27 mars 2009
- 1 sept. 2007 à 12:11
Bonjour, j'ai creer un program java pour envoie une requete HTTP simple vers le serveur google mais je voix que ça ne marche pas car je ne recoie aucune repence, aide moi a trouver ou est le probleme svp, le programme est (je veux savoir pk ça ne marche pas) :

import java.net.*;
import java.io.*;
class SMTPClient{
public static void main(String hat[]){
try{
Socket socket1=new Socket("www.google.com",80); 
socket1.setSoTimeout(10000);
OutputStream outr=socket1.getOutputStream();
InputStream in=socket1.getInputStream();
String str="GET /index.html HTTP/1.0";
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(outr)));
out.print(str);
System.out.println("Requet envoie");
BufferedReader reader=new BufferedReader(new InputStreamReader(in));
System.out.println("Attente de reponse...");
System.out.println(reader.readLine().toString());
socket1.close();
}catch(Exception exc){System.out.println(exc);}
}
}

3 réponses

cs_Kysic
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

1 sept. 2007 à 11:47
Salut,
ba il y a plusieurs problèmes:
1) ouvrir le PrintWriter avec le deuxième paramètre booléen true (pour l'autoflush, c'est à dire qu'il n'attent pas que la taille des donnés soient assez grande pour envoyer)
2) respecter le protocole http, au minimun finir la requète par deux "\r\n"
3) récupérer plusieurs ligne de résultat (la vous ne lisez qu'une ligne

Voilà un code qui marchera:

class SMTPClient {
    public static void main(String hat[]) {
        try{
            Socket socket1=new Socket("www.google.fr",80);
            socket1.setSoTimeout(10000);
            OutputStream outr=socket1.getOutputStream();
            InputStream in=socket1.getInputStream();
            PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(outr)), true);
            BufferedReader reader=new BufferedReader(new InputStreamReader(in));
            String str ="GET / HTTP/1.1\r\n"+
                "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/x-shockwave-flash, */*\r\n"+
                "Accept-Language: fr\r\n"+
                "Content-Type: application/x-www-form-urlencoded\r\n"+
                "Accept-Encoding: text\r\n"+
                "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4.0)\r\n"+
                "Host: mmscomposer.services.sfr.fr:80\r\n"+
                "Connection: Close\r\n"+
                "Cache-Control: no-cache\r\n"+
                "\r\n";
            out.println(str);
            System.out.println("Requet envoie");
            System.out.println("Attente de reponse...");
            while ((str = reader.readLine())!=null) {
                System.out.println(str);
            }
            socket1.close();
        }
        catch(Exception exc){
            System.out.println(exc);
        }
    }
}
0
cs_Kysic
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

1 sept. 2007 à 11:49
PS: désolés pour la ligne "Host: mmscomposer.services.sfr.fr:80\r\n",
j'ai récupérer ça d'un de mes anciens programmes...
http://kysicurl.free.fr/
0
iscalibar
Messages postés
15
Date d'inscription
vendredi 22 juin 2007
Statut
Membre
Dernière intervention
27 mars 2009

1 sept. 2007 à 12:11
Merçi de votre aide
0