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

IGN API Géoportail Discussion :

Récupération flux wms


Sujet :

IGN API Géoportail

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Récupération flux wms
    Bonjour,

    j'effectue des requêtes AJAX afin de récupérer l'image WMS renvoyée par l'ign. En premier lieu je fais un XMLHttpRequest pour récupérer le jeton via getToken en lui passant ma clef d'utilisation:
    Url = "http://jeton-api.ign.fr/getToken?key=MACLEF&output=raw&callback=Geoportal.GeoRMHandler.U185252368575729458.callback&";
    xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange = ProcessRequest1;
    xmlHttp.open( "GET", Url, true );
    xmlHttp.send( null );

    Jusque là pas de soucis ! A partir du moment où je manipule le jeton, les requêtes ne passent plus. En effet, j'effectue la même requête avec l'url suivante :
    var Url = "http://jeton-api.ign.fr/getConfig?key="+key+"&output=xml";
    mais la requête me retourne un status 0. Idem avec les getLayers WMS dont l'Url est :
    "http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=441600,5032320,441728,5032448&WIDTH=256&HEIGHT=256&TILED=true&gppkey="+key.

    Me manque t-il quelque chose ? Quelqu'un aurait-il une idée du pourquoi ?

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par vashvash Voir le message
    En effet, j'effectue la même requête avec l'url suivante :
    var Url = "http://jeton-api.ign.fr/getConfig?key="+key+"&output=xml";
    mais la requête me retourne un status 0. Idem avec les getLayers WMS dont l'Url est :
    "http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=441600,5032320,441728,5032448&WIDTH=256&HEIGHT=256&TILED=true&gppkey="+key.
    la valeur de gppkey est bien le jeton (retourné jeton-api), pas la clef (MA_CLEF)

    Qu'est-ce que la manipulation du jeton ?

    Pour "renouveller" le jeton, il faut passer à jeton-api la clef ET le jeton précédemment obtenu ...

    Sinon, un code plus complet serait plus facile à comprendre

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci pour la réponse rapide !

    Oui effectivement c'est bien le jeton que je passe dans la requête getLayer et getConfig ainsi que le clef qui figure dans le contrat. ( format du jeton : xQ5epGMN3-3ZUiPtrFj5OR098pgAAAAAAWRt...ABCtAAA au moins une cinquantaine de caractère).

    Quand je dis manipulation de jeton c'est juste le passage dans les différentes requêtes.

    Voici le code plus détaillé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var Url = "http://jeton-api.ign.fr/getToken?key=MACLE&output=raw";
        xmlHttp[0] = new XMLHttpRequest(); 
        xmlHttp[0].onreadystatechange = ProcessRequest0;
        xmlHttp[0].open( "GET", Url, true );
        xmlHttp[0].send( null );
    
    function ProcessRequest0(){
    alert(xmlHttp[0].readyState + "-" + xmlHttp[0].status + "-" +xmlHttp[0].statusText + "-" +(xmlHttp[0].responseText);
    }
    Je fais cela pour toutes nos requêtes en attendant bien qu'elles soient terminées avant de lancer les suivantes. Le getToken me retourne bien le jeton et 200 pour status mais les requêtes suivantes me donnent 0 pour status.

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par vashvash Voir le message
    Je fais cela pour toutes nos requêtes en attendant bien qu'elles soient terminées avant de lancer les suivantes. Le getToken me retourne bien le jeton et 200 pour status mais les requêtes suivantes me donnent 0 pour status.
    1/ si tu fais cela à chaque requête, tu vas vite vider tes connexions disponibles (50) : le jeton s'acquière et se renouvelle avant sa fin de vie (10mn) pas à chaque requête;

    2/ lors des requêtes WMS, passes-tu bien le bon referrer ?

    Pourquoi n'utilises-tu pas ce qui existe déjà dans l'API Géoportail Web 2D Javascript au lieu de tout refaire

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Oui effectivement je fais le getToken une seule fois mais déjà les requêtes suivantes retournent un status 0.
    Quand je dis "je fais cela pour chaque requête" c'est pour illustrer la procédure utilisée.
    Le referer que je passe pour l'instant est http://localhost/.
    Enfin je m'amuse à le refaire car j'ai déjà un outils d'édition d'images web dans lequel je voudrais intégrer les plans.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    2 128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 128
    Points : 1 764
    Points
    1 764
    Par défaut
    Il faut que le referrer soit celui déclaré lors de la demande de la clé.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Le referer n'est à vrai dire jamais changé, dans aucune requête. Il est toujours mis à http://localhost/ (d'après firebug - C'est le navigateur qui fait la requête qui le spécifie dans l'entête). C'est exactement le même que celui qui est envoyé par l'api (toujours d'après firebug).

    Après, je me trompe peut-être, et il faut le spécifier ailleurs ? en dehors du referer, et du jeton (gppKey), ya t'il d'autres paramètres qui pourraient me manquer lors de la requête? J'ai essayé de renseigner l'entête de ma requête pour être le plus proche possible de celle générée par l'api, en vain.

    merci en tout cas de prendre le temps de répondre.

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par vashvash Voir le message
    Le referer n'est à vrai dire jamais changé, dans aucune requête. Il est toujours mis à http://localhost/ (d'après firebug - C'est le navigateur qui fait la requête qui le spécifie dans l'entête). C'est exactement le même que celui qui est envoyé par l'api (toujours d'après firebug).
    Quant tu testes sut ta machine, l'URL est vraiment http://localhost/

    Citation Envoyé par vashvash Voir le message
    Après, je me trompe peut-être, et il faut le spécifier ailleurs ? en dehors du referer, et du jeton (gppKey), ya t'il d'autres paramètres qui pourraient me manquer lors de la requête? J'ai essayé de renseigner l'entête de ma requête pour être le plus proche possible de celle générée par l'api, en vain.
    Tu as tout les bons paramètres ...
    Le problème est que l'on essaie de t'aider avec des fragments de codes sans l'architecture globale de ton application et donc de comprendre pourquoi cela ne fonctionne pas

    Un dernier test : est-ce que les URLS en bas de cette page fonctionnent dans ton application ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Le code au complet est en fait une répétition de ce que j'ai déjà dit dans mes premiers posts plus haut avec à chaque fois les URLs différentes.

    Je viens de tester en générant une balise image et en lui passant comme source l'url utilisée pour la requête auparavant :
    "http://wxs.ign.fr/geoportail/wmsc?LAYERS=GEOGRAPHICALGRIDSYSTEMS.MAPS&EXCEPTIONS=text/xml&FORMAT=image/jpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=IGNF:GEOPORTALFXX&BBOX=441600,5032320,441728,5032448&WIDTH=256&HEIGHT=256&TILED=false&gppkey="+key;
    Et comme cela, ça marche, je récupère bien mon image.
    En revanche avec une requête xmlHttpRequest j'obtiens toujours un code status qui vaut 0. De même avec getConfig.

    Je peux m'en sortir en utilisant juste des balises image. On peut donc considérer ce sujet comme résolu.

    Merci pour votre aide !

  10. #10
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    Citation Envoyé par vashvash Voir le message
    Le code au complet est en fait une répétition de ce que j'ai déjà dit dans mes premiers posts plus haut avec à chaque fois les URLs différentes.
    Le code de tes post étant incomplets/fragmentés, j'ai pas pu creusé plus

  11. #11
    Expert confirmé
    Homme Profil pro
    Ingénieur cartographe
    Inscrit en
    Avril 2009
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 173
    Points : 4 224
    Points
    4 224
    Par défaut
    En reprenant ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var Url = "http://jeton-api.ign.fr/getToken?key=MACLE&output=raw";
    var xmlHttp= new XMLHttpRequest();
    xmlHttp.onreadystatechange = ProcessRequest0;
    xmlHttp.open( "GET", Url, true );
    xmlHttp.send( null );
    
    function ProcessRequest0(){
        alert(xmlHttp.readyState + "-" + xmlHttp.status + "-" +xmlHttp.statusText + "-" +(xmlHttp.responseText);)
    }
    il ne fonctionne pas derrière un proxy ...
    (4-200-0-) (rien de très anormal, il faut passer par un proxy qui va passer par le proxy )

    Sans proxy, il fonctionne

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

Discussions similaires

  1. Problème JMF récupération flux RTP
    Par Doumeasse38 dans le forum Multimédia
    Réponses: 2
    Dernier message: 27/09/2012, 14h29
  2. FFmpeg : récupération flux vidéo
    Par GrandGui dans le forum API graphiques
    Réponses: 1
    Dernier message: 06/08/2008, 14h46
  3. TELNET : Récupération Flux
    Par Luciefer dans le forum Programmation et administration système
    Réponses: 6
    Dernier message: 14/08/2007, 19h34
  4. lecture et récupération flux RSS appli winForms
    Par marcusien dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/04/2007, 17h38
  5. Pb de récupération FLUX RSS
    Par germain_ledroit dans le forum Struts 1
    Réponses: 5
    Dernier message: 24/11/2006, 17h29

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