IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Sockets et requêtes HTTP


Sujet :

API standards et tierces Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 19
    Points
    19
    Par défaut Sockets et requêtes HTTP
    Bonjour,

    je vous expose succintement le problème, je dois communiquer avec un serveur via le protocole HTTP à travers un Socket. Après avoir codé plusieurs méthodes pour gérer les champs des Header HTTP, je constate que tout celà ne fonctionne pas. De fil en aiguille, j'en viens à un test assez simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
        public static void main(String[] args) {
     
            try {
                Socket so = new Socket("oe.hotmail.com",80);
                BufferedReader sc = new BufferedReader(new InputStreamReader(so.getInputStream()));
                PrintWriter pw = new PrintWriter(so.getOutputStream(),true);
                String s = "GET /svcs/hotmail/httpmail.asp HTTP/1.1\r\n" +
                            "Host: oe.hotmail.com\r\n" +
                            "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.9) Gecko/20061207 Firefox/1.5.0.9\r\n" +
                            "\r\n";
                pw.println(s);
                while (!sc.ready()) {
     
                }
                while (sc.ready()) {
                    tmp += sc.readLine() + "\r\n";
                }
                System.out.println("\nReponse 1\n\n" + tmp);
                tmp = "";
                System.out.println("\nRequete 2\n\n" + s);
                System.out.println("Avant while");
                pw.println(s);
                while (!sc.ready()) {
     
                }
                while (sc.ready()) {
                    tmp += sc.readLine() + "\r\n";
                }
                System.out.println("Après while");
                System.out.println("\nReponse 2\n\n" + tmp);
                sc.close();
                pw.close();
                so.close();
            } catch (UnknownHostException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    En gros, un premier appel d'une requête GET qui provoque une réponse du serveur (401) puis exactement la même requête (elle est bien envoyée, quoique le temps mis pour l'envoyer paraisse excessivement long à la vue de la simplicité du code, chose vérifiée via Ethereal) qui elle ne provoque aucune réponse de la part du serveur. Y aurait-il une grossière erreur qui m'échapperait? Est-il possible que ce soit le serveur qui décide de m'ennuyer (ce qui me semble étrange en soit puisqu'il pose problème sur des requêtes différentes mais fonctionne par l'intermédiaire de Thunderbird par exemple)? Je vous avoue ne pas trop comprendre sur ce coup là.

    Edit: j'ajouterais que des flush après les println ne sont pas suffisants.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Si je me souviens bien, en HTTP de base une requête = une connection (surtout si tu te fais jeter par le serveur). Essaie de reconnecter le socket à chaque requête.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Merci bien pour cet éclairage, je pensais que depuis HTTP 1.1 il n'y avait plus ce genre de souci alors que le serveur, ici, coupe bien la connexion après chaque requête. Donc problème résolu, merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Socket requête http
    Par Heroiik dans le forum Réseau
    Réponses: 8
    Dernier message: 28/12/2014, 18h52
  2. Plusieurs requêtes HTTP avec la même socket
    Par sabari dans le forum Réseau
    Réponses: 4
    Dernier message: 24/12/2014, 15h52
  3. requêtes http en pur raw socket TCP et UDP
    Par pam76 dans le forum Réseau
    Réponses: 2
    Dernier message: 27/10/2011, 13h13
  4. Problème d'envoi de deux requêtes HTTP 1.1 dans un même socket
    Par sousal dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 18/08/2011, 09h43
  5. Requête HTTP - POST avec socket
    Par kalylive dans le forum Réseau
    Réponses: 3
    Dernier message: 28/04/2008, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo