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 :

Geocode et lib Curl : 302 found


Sujet :

IGN API Géoportail

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut Geocode et lib Curl : 302 found
    Bonjour,

    J'essaye de mettre en place un système de géocode d'adresse avec la librairie Curl en PHP.
    Actuellement, impossible d'obtenir un XML en retour, juste un message "302 found".

    Voici le code que j'utilise :
    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
    <?php
    $requesturl = 'http://wxs.ign.fr/MYKEY/geoportail/ols?';
    $requestxml = '<?xml version="1.0" encoding="UTF-8"?><XLS xmlns:xls="http://www.opengis.net/xls" xmlns:gml="http://www.opengis.net/gml" xmlns="http://www.opengis.net/xls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="http://www.opengis.net/xls http://schemas.opengis.net/ols/1.2/olsAll.xsd"><RequestHeader/><Request requestID="1" version="1.2" methodName="LocationUtilityService"><GeocodeRequest returnFreeForm="false"><Address countryCode="StreetAddress"><StreetAddress><Street>1 rue Marconi</Street></StreetAddress><Place type="Municipality">Metz</Place><PostalCode>57000</PostalCode></Address></GeocodeRequest></Request></XLS>';
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $requesturl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', 'Content-length:'.strlen($requestxml)));
    curl_setopt($ch, CURLOPT_REFERER, 'http://localhost');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $requestxml);
    $reponse = curl_exec($ch);
    
    echo $reponse;
    $xmlr = new SimpleXMLElement($reponse);
    foreach($xmlr->entry as $coord){
    	echo $coord->title . "\n";
    }
    ?>
    Mon referer est en localhost, le problème peut il venir de là ?

    Cordialement,

    G.

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 133
    Par défaut
    L'origine de l'erreur est une "redirection" effectuée sur le service ols de l'IGN: on lui pose une question en http et il répond en https.
    Pour contourner ce comportement douteux (si le service est effectivement disponible en http), il faut faire la requête en https ou demander à curl de suivre les redirections.

  3. #3
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut
    Merci pour ta réponse.

    J'ai rajouté cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    Plus de message 302 found, plus rien ne s'affiche maintenant. J'ai vu que certain sur le forum ont réussi mais, leurs posts remontent à quelques années, ce n'est plus possible maintenant ?

  4. #4
    Membre Expert Avatar de gcebelieu
    Homme Profil pro
    Ingénieur Géographe et Cartographe
    Inscrit en
    Novembre 2010
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Géographe et Cartographe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2010
    Messages : 1 106
    Par défaut
    Bonjour,

    je viens de copier votre code tel quel (hormis la clef que j'ai remplacée par une associée au referer http://localhost) et sans le rajout (curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);) dans une page php et j'obtiens le résultat suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    49.103415 6.215576
    r marconi Metz Projection ADRNIVX_0000000273829885 57 6.215576;49.103415;6.215576;49.103415 Metz 57463 FXX TRONROUT0000000010343573 57070
    => un résultat correct, le service a répondu en http, comme attendu lorsqu'on l'interroge en http.

    Le problème doit être ailleurs. Avez-vous plus d'éléments a nous communiquer :

    * console "réseau" de firebug ou de vos outils de développement associés à votre navigateur ?
    * logs serveurs ?

    Merci,

    Gilles

  5. #5
    Candidat au Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Par défaut
    Merci, je pense que sur un serveur ça marchera alors.
    J'utilise WAMP, le problème viens peut être de là.

    Log Apache :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    127.0.0.1 - - [08/Sep/2014:11:18:08 +0200] "GET /geoc/geoc.php HTTP/1.1" 200 13714
    Pour la console :
    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
    Remote Address:127.0.0.1:80
    Request URL:http://localhost/geoc/geoc.php
    Request Method:GET
    Status Code:200 OK
    Request Headersview source
    Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Encoding:gzip,deflate,sdch
    Accept-Language:en-US,en;q=0.8
    Cache-Control:max-age=0
    Connection:keep-alive
    Host:localhost
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.103 Safari/537.36
    Response Headersview source
    Connection:Keep-Alive
    Content-Length:13714
    Content-Type:text/html
    Date:Mon, 08 Sep 2014 09:19:03 GMT
    Keep-Alive:timeout=5, max=100
    Server:Apache/2.4.9 (Win64) PHP/5.5.12
    X-Powered-By:PHP/5.5.12

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

    Informations forums :
    Inscription : Mai 2009
    Messages : 2 133
    Par défaut
    Gilles,

    Je suis certain qu ce matin le service répondait en https, je n'ai pas conservé la trace wireshark, mais le http 302 ne laisse pas beaucoup de doutes.
    Je n'ai plus ce comportement actuellement.

    Geiko,
    Pour progresser, il faut avoir une trace avec un outil type wireshark des échanges IP entre le PC et le serveur API.

Discussions similaires

  1. CURL Not found !
    Par apt dans le forum Bibliothèques et frameworks
    Réponses: 27
    Dernier message: 30/10/2011, 15h23
  2. Compiler un .c avec lib cURL en statique
    Par delete dans le forum Linux
    Réponses: 14
    Dernier message: 19/04/2009, 00h39
  3. Compiler un .c avec lib cURL en static
    Par delete dans le forum Linux
    Réponses: 0
    Dernier message: 07/03/2009, 23h58
  4. emplacement de la page 302 found
    Par anthonycosson dans le forum Apache
    Réponses: 1
    Dernier message: 15/05/2007, 12h41

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