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

Langage Java Discussion :

[internet]faire une requete HTTP.


Sujet :

Langage Java

  1. #1
    Membre actif
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    583
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 583
    Points : 265
    Points
    265
    Par défaut [internet]faire une requete HTTP.
    Bonjour,

    je developpe une petite appli permettant de mettre a jour son ip chez dyndns.

    l'url est de la forme:
    http://monlogin:monpassword@members.dyndns.org/nic/update?system=dyndns&hostname=mondomaine&myip=monip&wildcard=OFF&backmx=NO&offline=NO"

    pour mettre a jour je faire donc:

    j'ai codé ceci:

    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
     
    try 
    		{
    			URL url = new URL(urlSite);
     
    			URLConnection _urlConnection = url.openConnection();
    			InputStream in = _urlConnection.getInputStream();
    			int c = in.read();
     
    			StringBuilder build = new StringBuilder();
     
    			while (c != -1) 
    			{
    				build.append((char) c);
     
    				c = in.read();
    			}
     
    			String str = build.toString();
     
    			System.out.println("sortie de l'update: "+ str);
    		}
    		catch(MalformedURLException ex)
    		{
    			System.out.println("Exception URL: " + ex.getMessage());
    		}
    		catch(IOException ex)
    		{
    			System.out.println("Exception IO : " + ex.getMessage());
    		}
    mais ca me sort un erreur ioexception 401 page not found.

    alors que si je test l'url contenu dans la variable urlSite dans firefox, ca marche nickel.

    Ou est l'erreur svp?

    merci

  2. #2
    Membre actif Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Points : 233
    Points
    233
    Par défaut
    essaye de faire ce que tu fais en java avec un telnet

    Sinon, moi j'utiliserai directement des socket

  3. #3
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Faudrait pas rajouter le port ? genre un pti ":80" derrière ?

  4. #4
    Membre actif
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    583
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 583
    Points : 265
    Points
    265
    Par défaut
    SI je recois une erreur 401 http bad request c'est que je passe par le 80 forcement.

  5. #5
    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
    Non, le code d'erreur que tu reçois n'a rien à voir avec le port utilisé. Tu pourrais avoir une 401 avec n'importe quel port. Enfin bon là il doit prendre le port 80 par défaut.

    Tu peux essayer d'utiliser Ethereal ou un truc dans le genre pour voir quelle est la requête HTTP qu'il envoie.

  6. #6
    Membre actif
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    583
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 583
    Points : 265
    Points
    265
    Par défaut
    J'ai sniffer ce qui se passait avec ethereal, ca passe bien par le port 80, je comprend pas!!!

    J'ai pompé un code deja fait que j'ai legerement modifier:

    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
     
    private void upp(String addr)
    	{
    		try {
    	        // Construct data
    	        String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8");
    	        data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8");
     
    	        // Send data
    	        URL url = new URL(addr);
    	        URLConnection conn = url.openConnection();
    	        conn.setDoOutput(true);
    	        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    	        wr.write(data);
    	        wr.flush();
     
    	        // Get the response
    	        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	        String line;
    	        while ((line = rd.readLine()) != null) {
    	            // Process line...
    	        }
    	        wr.close();
    	        rd.close();
    	    } catch (Exception e) {
    	    	System.out.println(e.getMessage());
    	    }
    	}
    toujours cette fichu erreur 401

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Server returned HTTP response code: 401 for URL: http://login:pass@members.dyndns.org/nic/update?sys...
    merci

  7. #7
    Membre actif Avatar de trax44
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 300
    Points : 233
    Points
    233
    Par défaut
    Tu as essayé ton code avec une autre page ?
    Genre, essayer d"ouvrir l'index de google ?
    Qu'es ce que te renvoie ethreal exactement (sauf ton mot de passe )

    @+

  8. #8
    Membre actif
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    583
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 583
    Points : 265
    Points
    265
    Par défaut
    oui avec une autre page ca marche. Mais apparament il fau juste donner un host genre :http://site.com. si on va plus loin appeller une page avec des parametre ca foire.
    Etheral me montre bien que je fait une connection sur le port distant 80.

  9. #9
    Membre actif
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    583
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 583
    Points : 265
    Points
    265
    Par défaut
    J'avais fait cette fonction qui marche très bien:

    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
     
    private static URL _urlCheckIP;
    	private static String _addrCheckIP = "http://checkip.dyndns.org"; 
    	private static URLConnection _urlConnection;
     
    public static String GetIP()
    	{
    		try
    		{
     
    			_urlCheckIP = new URL(_addrCheckIP);
     
    			_urlConnection = _urlCheckIP.openConnection();
    			InputStream in = _urlConnection.getInputStream();
    			int c = in.read();
     
    			StringBuilder build = new StringBuilder();
     
    			while (c != -1) 
    			{
    				build.append((char) c);
     
    				c = in.read();
    			}
     
    			String str = build.toString().substring(76);
     
    			return str.substring(0, str.indexOf('<'));  
    		}
    		catch(IOException ex)
    		{
    			ex.printStackTrace();
    		}
     
    		return "noip";
    	}
    alors pourquoi l'autre ne veut rien savoir, je sais pas.

    J'ai join avec ce post le log d'ethereal que j'ai renommer en .txt.
    Fichiers attachés Fichiers attachés

  10. #10
    Membre actif
    Avatar de Blo0d4x3
    Inscrit en
    Octobre 2003
    Messages
    583
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 583
    Points : 265
    Points
    265
    Par défaut
    Bon j'ai un peu progresser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    URL url = new URL("http://www.google.fr/search?hs=" + URLEncoder.encode("8af&hl=fr&client=firefox&rls=org.mozilla%3Afr%3Aunofficial&q=java+connection+http+url&btnG=Rechercher&meta=lr%3Dlang_fr"));
    			URLConnection _urlConnection = url.openConnection();
    Ca ca marche.

    Et une erreur 401 ca le serveur qui refuse une authentification.

    Lorsque je rentre l'url de mise a jour d el'ip a la main dans le navigateur, j'ai une fenetre qui apparait pour confirmer mon accès au site.

    Mon prog doit buté la.

    Comment faire pour qu'il passe cette authentification?
    C'est curieux qu'en c# je n'ai pa eu ce probleme, mais ca doit être aussi fesable en java.

Discussions similaires

  1. Faire un bouton qui fait une requete HTTP ?
    Par fraginfo dans le forum VB.NET
    Réponses: 0
    Dernier message: 03/02/2010, 18h51
  2. Réponses: 6
    Dernier message: 13/03/2009, 12h31
  3. Réponses: 5
    Dernier message: 28/09/2007, 17h56
  4. [http] comment faire une requete http
    Par Slimer dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 28/07/2004, 11h48
  5. Réponses: 2
    Dernier message: 03/05/2004, 12h13

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