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 :

question : Http URLConnection


Sujet :

API standards et tierces Java

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 48
    Par défaut question : Http URLConnection
    Hi,

    Quand j'accède à cette page :
    https://hr.telekom.de/applicant/sear...rID=2008-17405
    avec un navigateur je tombe sur la bonne page, par contre quand j'exécute ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    URLConnection conn = new URL("https://hr.telekom.de/applicant/search/showoffer.do?offerID=2008-17405").openConnection();
    conn.setDoOutput(true);
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    wr.flush();
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = rd.readLine()) != null) {
          System.out.println(line);
    }
    rd.close();
    J'obtiens cette autre page : https://hr.telekom.de/applicant/sear...o?locale=de_DE

    Je comprends pas trop d'où vient le problème car j'ai vidé tout le cache et les cookies du navigateur et j'ai aussi essayé de changer l'usert-agent des 2 côté (java et navigateur) rien n'a changé.

    Quelqu'un aurait une idée ? Comment il filtre ça ? Ou alors c'est une erreur de ma part ?

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Le serveur doit renvoyer une page différente en fonction de l'entête fournie par le son client.

    Essaye de fournir exactement la même entête que ton navigateur web.

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 48
    Par défaut
    Je viens d'essayer une autre fois.

    Voici mon code :

    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
    public static void main(String[] args) throws IOException {
    	URLConnection conn = new URL("https://hr.telekom.de/applicant/search/showoffer.do?offerID=2008-17405").openConnection();
    	conn.setDoOutput(true);
    	conn.setRequestProperty("Host", "hr.telekom.de");
    	conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)");
    	conn.setRequestProperty("Accept", "*/*");
    	conn.setRequestProperty("Accept-Language", "fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3");
    	conn.setRequestProperty("Accept-Encoding", "gzip,deflate");
    	conn.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    	conn.setRequestProperty("Keep-Alive", "300");
    	conn.setRequestProperty("Connection", "keep-alive");
    	OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    	wr.flush();
    	BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	String line;
    	while ((line = rd.readLine()) != null) {
    	      System.out.println(line);
    	}
    	rd.close();
    }
    J'ai également fais un screen de safari et firefox pour montrer les différentes entêtes. Dans safari elles sont même pas précisé et j'ai mis toute celles de firefox, du moins je crois.

    Je viens de voir que y a ça d'indiqué sur la page que me retourne le serveur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <!-- ERROR MESSAGE -->
                  <br/><br/>
                    <b>ERREUR:<ul>
                      <li>Entrée null-null non valide<br/>Veuillez entrer chaque fois un nombre. (p.*ex., 2006 - 123)</li>
                    </ul></b><br/><br/>
    Apparemment cela viendrait de la variable offerID alors que j'ai fournis exactement la même. Ou alors la façon dont c'est fait n'est pas bonne ?
    Images attachées Images attachées   

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le problème doit venir de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    conn.setDoOutput(true);
    Cela génère normalement une requête de type POST... alors que ce n'est pas le cas.

    a++

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 48
    Par défaut
    Oh oui Oh oui merci bien c'était exactement ça.

    Evidemment en GET pas la peine d'écrire dans le flux alors ça se résume à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String[] args) throws IOException {
    	URLConnection conn = new URL("https://hr.telekom.de/applicant/search/showoffer.do?offerID=2008-17405").openConnection();
    	BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	String line;
    	while ((line = rd.readLine()) != null) {
    	      System.out.println(line);
    	}
    	rd.close();
    }
    On envoi l'adresse et on lit la réponse, c'est tellement simple

    Merci

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

Discussions similaires

  1. Question Formulaire HTTP
    Par Dizayeure dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/01/2009, 08h56
  2. Réponses: 3
    Dernier message: 18/04/2006, 22h49
  3. Entetes Http de URLConnection
    Par kichemans dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 03/01/2006, 11h04
  4. [HTTP] Questions d'un noob pour positionner du texte
    Par Soubi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 21/12/2005, 01h13
  5. Réponses: 2
    Dernier message: 10/11/2005, 20h00

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