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

Développement Web en Java Discussion :

Problème avec un url.openStream


Sujet :

Développement Web en Java

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable informatique
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut Problème avec un url.openStream
    Bonjour
    L'appel à url.openStream() a un comportement bizarre : il change le contenu de l'url et plante, car l'url modifiée n'existe pas ; je n'ai pas ce problème pour d'autres url

    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
      public static void main(String[] argv){ 
        String adresse = "1rPALU";
        URL url = null;
     
        try{
            url = new URL("http://www.boursorama.com/infos/consensus/consensus_previsions.phtml?symbole="+adresse);
            //url = new URL("http://www.boursorama.com/cours.phtml?symbole="+adresse);
     
            System.out.println(url.toString());
     
            System.out.println(url.openStream().toString());
     
            InputStream is = url.openStream();
        }
        catch(MalformedURLException e){
           System.out.println("Error 1 : url incorrecte");
           e.printStackTrace();
        }    
        catch (FileNotFoundException e) {
            e.printStackTrace();       
            System.out.println("Error Test FNF1");
            System.out.println(e.getMessage());
        }        
        catch (IOException e) {
            e.printStackTrace();
            System.out.println("Error Test IO1");
        }  
      }
    Cela donne :
    http://www.boursorama.com/infos/cons...symbole=1rPALU
    Error Test FNF1
    http://www.boursorama.com/cours/cons...symbole=1rPALU

    .../infos/... est remplacé par .../cours/...

    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Par défaut
    Bonjour,

    Ça ne serais pas du à une redirection de la part de boursorama, car quand j'essaye d'accéder à ton lien j'arrive sur la page d'accueil du site?

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable informatique
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Oui, ça y ressemble en tout cas. Je suppose que Boursorama repère qu'il s'agit d'un programme, et non d'un accès par navigateur.
    Il semble qu'on peut modifier l'entête Http pour simuler un navigateur, mais je ne sais pas comment faire. J'ai un peu cherché, mais je n'ai pas encore trouvé. Si tu as une idée ...

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Par défaut
    Quand tu colles ton url dans ton navigateur tu arrive à accéder à la page voulue ou pas, car moi j'arrive sur la page d'accueil?

    Pour simuler l'appel via un navigateur dans ton programme tu peux utiliser la ligne suivante, je pense que ça suffit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect.setRequestProperty("User-Agent", "Mozilla/5.0");

  5. #5
    Membre régulier
    Homme Profil pro
    Responsable informatique
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Oui, avec l'adresse de départ (http://www.boursorama.com/infos/cons...symbole=1rPALU)

    Sinon avec l'adresse redirigée (http://www.boursorama.com/cours/cons...symbole=1rPALU), j'arrive aussi sur la page d'accueil du site.

    J'ai essayé la méthode que tu proposes, mais ça ne marche pas mieux :

    URLConnection connexion = null;
    try {
    URL monURL = new URL("http://www.boursorama.com/infos/consensus/consensus_previsions.phtml?symbole=1rPALU");
    connexion = monURL.openConnection();
    System.out.println(connexion.getRequestProperty("User-Agent"));
    connexion.setRequestProperty("User-Agent", "Mozilla/5.0");
    System.out.println(connexion.getRequestProperty("User-Agent"));
    System.out.println("Avant exception : "+connexion.toString());

    //La commande qui déclenche l'exception :
    InputStream flux = connexion.getInputStream();

    } catch (Exception e) {
    e.printStackTrace();
    System.out.println("Apres exception : "+connexion.toString());
    }

    Ca donne :
    null
    Mozilla/5.0
    Avant exception : sun.net.http://www.protocol.http.HttpURLConn...symbole=1rPALU
    Apres exception : sun.net.http://www.protocol.http.HttpURLConn...symbole=1rPALU

  6. #6
    Membre régulier
    Homme Profil pro
    Responsable informatique
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Mince, le résultat est tronqué ; mais on retrouve le même problème (info remplacé par cours !!
    mais peut-être que je ne m'y prends pas correctement ?

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Par défaut
    Salut,

    Essaye le code suivant, j'ai changé le type de la connexion et casté le openConnection en HttpURLConnection:
    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
     
    try {
        HttpURLConnection connect;
        URL monURL = new URL("http://www.boursorama.com/infos/consensus/consensus_previsions.phtml?symbole=1rPALU");
     
        connect = (HttpURLConnection)monURL.openConnection();
     
        // On authorise la lecture et l'écriture sur le serveur
        connect.setUseCaches(false);
        connect.setDoOutput(true);
     
        // Get the response.
        System.setProperty("http.keepAlive", "false");
        connect.connect();			
        InputStream iStream = connect.getInputStream();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("Apres exception : "+connexion.toString());
    }

  8. #8
    Membre régulier
    Homme Profil pro
    Responsable informatique
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Non, malheureusement, ça ne marche toujours pas :

    java.io.FileNotFoundException: http://www.boursorama.com/cours/cons...symbole=1rPALU
    at sun.net.http://www.protocol.http.HttpURLConn...tion.java:1439)
    at TestUrl.main(TestUrl.java:28)
    at __SHELL4.run(__SHELL4.java:6)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at bluej.runtime.ExecServer$3.run(ExecServer.java:774)

    Tu as essayé de le faire tourner ? ça a marché chez toi ?

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Par défaut
    Je viens de tester ton code chez moi et j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.net.ProtocolException: Server redirected too many  times (20)
    Ce qui est normal car quand on appel ton lien ça redirige plein de fois avant de renvoyer la page d'accueil.

    1- Pourquoi veux tu accéder à cette URL alors que ça dirige vers la pages d'accueil?
    2- Passes tu par un proxy pour aller sur internet?si oui est-il correctement configuré?

  10. #10
    Membre régulier
    Homme Profil pro
    Responsable informatique
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    1 - Ca marchait impeccable jusque fin septembre et depuis, ça plante ; je récupère des infos dans le source de la page (BNA, CA, etc.) et je les mets dans une base de données.
    2 - Non, je n'utilise pas de proxy.

    Je crois que je vais essayer de trouver les infos ailleurs, sur un autre site. C'est dommage, car c'est la seule url avec laquelle j'ai des problèmes. Par exemple, avec :
    URL monURL = new URL("http://www.boursorama.com/cours.phtml?symbole=1rPALU");
    Je n'ai pas de souci

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Par défaut
    Oui effectivement avec cette page ça fonctionne bien, le problème doit venir de Boursorama qui n'affiche plus cette page.

    Bon courage

  12. #12
    Membre régulier
    Homme Profil pro
    Responsable informatique
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    Merci pour ton aide ; je continue mes recherches

  13. #13
    Membre régulier
    Homme Profil pro
    Responsable informatique
    Inscrit en
    Octobre 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2011
    Messages : 8
    Par défaut
    C'était bien ça ; Boursorama avait bougé la page ; maintenant, les infos correspondantes se trouvent sous :
    http://www.boursorama.com/bourse/act...symbole=1rPALU
    En plus, ils n'ont pas modifié le code source, donc ça remarche sans rien modifier d'autre que l'url

    En tout cas, merci pour ton aide

  14. #14
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Par défaut
    Tant mieux si ça marche maintenant.

    De rien, je n'ai pas fait grand chose!!

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

Discussions similaires

  1. Spring-Faces + problème avec les URL paramétrés
    Par ITLEARNEAR dans le forum JSF
    Réponses: 0
    Dernier message: 24/05/2014, 01h58
  2. Problèmes avec les URL FTP
    Par ngatchou dans le forum Général Java
    Réponses: 5
    Dernier message: 13/06/2012, 15h23
  3. Problème avec RequestBuilder: URL absolue
    Par schwarzy2 dans le forum GWT et Vaadin
    Réponses: 2
    Dernier message: 06/09/2011, 13h24
  4. [4.0] Problème avec l'Url Routing
    Par Nadd dans le forum ASP.NET
    Réponses: 2
    Dernier message: 14/06/2009, 20h38
  5. Problème avec l'url rewriting
    Par sami_c dans le forum Apache
    Réponses: 6
    Dernier message: 02/09/2008, 09h22

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