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

Entrée/Sortie Java Discussion :

[HTTP] Requête Get et récupération de la réponse


Sujet :

Entrée/Sortie Java

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut [HTTP] Requête Get et récupération de la réponse
    Bonjour,

    Je cherche à faire une petite procédure qui envoie une requête GET à un serveur connaissant son nom et son port et en récupérer la réponse. Je ne veux pas afficher la page, juste récupérer l'état de la réponse (Ex: 200 si tout est OK). J'ai déjà réussi à mettre en place des protcoles SMTP, POP et je pensais que celà fonctionnerait à peu près de la même manière.
    La connexion avec le serveur a l'air de s'effectuer (pas de déclenchement d'exception) cependant je n'ai pas de réponse de celui-ci.

    1ère Question: est-ce qu'au moment de la connexion au serveur HTTP, celui-ci me renvoie un acquittement (ex:vous êtes connecté) (avant l'envoi de la requête bien sûr)

    2ème question : qu'est-ce qui n'irait pas dans mon code qui suit ?
    (A l'affichage : strBuf = null)

    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
     
    	public void verifGet() {
    		Socket socketServer;
     
    		/** permet de créer un flux de sortie sur la socket vers le serveur */
    		DataOutputStream dos;
     
    		/** permet de lire sur la socket les messages provenant du serveur */
    		BufferedReader br;
     
    	    /** permet d'écrire sur le flux de sortie donc d'envoyer des messages au serveur */
    		PrintStream ps;
    		try {
    			socketServer = new Socket(hostname,8080);  
    			dos = new DataOutputStream(((Socket) socketServer).getOutputStream());		
    			br  = new BufferedReader(new InputStreamReader(socketServer.getInputStream())); 		            		
    			ps = new PrintStream(dos);
     
    			/** strBuf reçoit les réponses du serveur */	
    			String strBuf = null; 
    			strBuf = br.readLine();
     
    			ps.print("GET http://<a href="http://www.developpez.com" target="_blank">www.developpez.com</a> HTTP/1.0\n");
    			ps.print("\n");
    			strBuf = br.readLine();
                                                    System.out.println("strBuf "+strBuf);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}	            		         
    	}

  2. #2
    Membre expérimenté
    Avatar de fabszn
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2002
    Messages
    974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2002
    Messages : 974
    Points : 1 638
    Points
    1 638
    Par défaut
    Hello,

    Je pense que c'est la syntaxe du protocole HTTP lors de l'envoie de ta requete qui n'est pas respecté...
    Java possede des classes qui te permette de faire abstraction de ce detail
    @+

    Fabszn
    Twitter : @fsznajderman

    N'oubliez pas le bouton
    Comment bien poser ses questions sur le forum


  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Merci pour ta réponse,

    j'avais déjà essayer avec URLConnecyion et même httpConnection, mais j'avais obtenu encore moins de résultat qu'avec le code que je t'ai mise.

    Là, j'ai essayé dles deux premières manières et il me renvoie une exception (cf ci-dessous). dans le fonction OpenConnection(), on peut apparemment lui passer un objet de type Proxy mais je ne vois pas comment le construire de façon adéquate (adressse etc...)

    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
     
    java.net.ConnectException: Connection timed out: connect
    	at java.net.PlainSocketImpl.socketConnect(Native Method)
    	at java.net.PlainSocketImpl.doConnect(Unknown Source)
    	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    	at java.net.PlainSocketImpl.connect(Unknown Source)
    	at java.net.Socket.connect(Unknown Source)
    	at java.net.Socket.connect(Unknown Source)
    	at sun.net.NetworkClient.doConnect(Unknown Source)
    	at sun.net.www.http.HttpClient.openServer(Unknown Source)
    	at sun.net.www.http.HttpClient.openServer(Unknown Source)
    	at sun.net.www.http.HttpClient.<init>(Unknown Source)
    	at sun.net.www.http.HttpClient.New(Unknown Source)
    	at sun.net.www.http.HttpClient.New(Unknown Source)
    	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
    	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
    	at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
    	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    	at packRegle.Type.verifGet(Type.java:223)
    	at packRegle.Type.run(Type.java:248)

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut le bon code à utiliser
    voici le bon code à utiliser.

    Si la connexion ne s'effectue pas, ça va dans l'exception et sinon on traite le code erreur renvoyé

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public boolean verifGet() {
    		Socket socketServer;
     
    		/** permet de créer un flux de sortie sur la socket vers le serveur */
    		DataOutputStream dos;
     
    		/** permet de lire sur la socket les messages provenant du serveur */
    		BufferedReader br;
     
    	    /** permet d'écrire sur le flux de sortie donc d'envoyer des messages au serveur */
    		PrintStream ps;
    		try {
     
    			Socket s = new Socket(url,port); // port par défaut = 80 
     
    			/** permet de créer un flux d'entrée sur la socket vers le client */ 
    			InputStream in = s.getInputStream(); 
     
    			/** permet de créer un flux de sortie sur la socket vers le serveur */
    			OutputStream out = s.getOutputStream(); 
     
    			/** permet de lire sur la socket les messages provenant du serveur */
    			BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     
    			/** permet d'écrire sur le flux de sortie donc d'envoyer des messages au serveur */
    			PrintWriter writer = new PrintWriter(out); 
     
    			/** envoi de la commande pour l'obtention d'informations sur le serveur */
    			String command = "OPTIONS / HTTP/1.0\n\n"; 
    			writer.print(command); 
    			writer.flush(); 
     
    			/** lecture de la réponse */
    			String[] input = reader.readLine().split(" "); 			
    			if (input[1].equals("500") || input[1].equals("501") || input[1].equals("502") || input[1].equals("503") || input[1].equals("504") || input[1].equals("505")) {
    				System.out.println(input);
    				return false;
    			}
    			for (int i=0;i<input.length;i++) {
    				System.out.print(input[i] + " ");	
    			}
    			System.out.println();
     
    			/** fermeture de la socket */
    			s.close();
    			return true;
     
    		}catch (IOException e) {
    			return false;
    		}
    	}

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

Discussions similaires

  1. [PHP 5.3] modifier Range dans une requête GET HTTP
    Par moukit233 dans le forum Langage
    Réponses: 2
    Dernier message: 18/10/2012, 17h41
  2. [iOS 4.x] Requête HTTP Methode GET ou POST
    Par salma.mathlouthi dans le forum Objective-C
    Réponses: 0
    Dernier message: 05/10/2012, 15h45
  3. HTTPS et requête GET
    Par newic500 dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 11/05/2010, 21h16
  4. Réponses: 3
    Dernier message: 03/10/2008, 22h42
  5. [OpenOffice][Texte] [Macro]Requête http & récupération de la réponse
    Par tanith dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 05/03/2008, 17h23

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