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 PHP Discussion :

CURL et CSV distant via authentification


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut CURL et CSV distant via authentification
    Bonjour à ami développeur.

    Je me permet de solliciter votre aide part rapport à un script pour utiliser une API REST. Ce script permet de récupérer un fichier CSV indiquant les communication téléphonique d'un jour donné.

    Voici le script.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'http://login:password@extranet.alphalink.fr/rest/call_details/daily.csv?date=20120305');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_USERPWD, login:password');
    $data = curl_exec($ch);
    echo $data;
    Quand je lance le script j'ai une erreur 302 Found, et le fichier CSV ne s'exporte pas.

    J'ai vérifié si les identifiants étaient les bon, et pas de soucis avec cela, je me connecte manuellement sur http://extranet.alphalink.fr/rest/ca...?date=20120305 et ça exporte le fichier.

    Pouvez vous m'éclairer sur quel soucis pourrait être a l'origine de la défaillance du script.

    Bien cordialement,

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pas besoin de curl, ouvre juste ton lien via file_get_contents, ça depend si tu veux le copier ou le parser, si tu veux le copy fait un copy, si tu veux le parser fait un fopen + fgetcsv

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    merci de votre réponse, malheureusement j'avais déjà utilisé cette fonction, mais j'avais un message d'erreur comme quoi l'identification ne fonctionner pas. (HTTP request failed! HTTP/1.1 401 Unauthorized in)

    Le cURL était pour moi le protocole le plus adapter a cette situation.

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pour s’authentifier en http c'est avec : user:pass@example.com
    avec curl pas besoin de mettre l'authentification dans l'url

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    S'agissant d'une API REST, on ne peut pas utiliser les fopen car les CSV sont généré à la volé par l'intermédiaire du paramètre ?daily.csv=20120305.

    j'ai modifié le script en ajoutant tes recommandation concernant le login et mot de passe, mais quand je fais un var_dump($result); j'ai une réponse boolean=false

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $url = 'http://extranet.alphalink.fr/rest/call_details/daily.csv?date=20120301';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_USERPWD, 'login:password');
    curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    $result = curl_exec($ch);
     
      var_dump($result);
      curl_close($ch);
    vu que j'ai un boolean false, cela ne pourrait il pas venir d'une variable fct curl_setopt mal renseignée ou oubliée.

    Cordialement,

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par FraKtaL2k Voir le message
    S'agissant d'une API REST, on ne peut pas utiliser les fopen car les CSV sont généré à la volé par l'intermédiaire du paramètre ?daily.csv=20120305.
    fait un curl ou fopen c'est pareil c'est uniquement des requêtes en http

    c'est possible que le serveur demande un user-agent

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Voila j'ai trouvé.

    J'ai rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    a mon code, et maintenant j'arrive à récupéré les données que je veux.

    Je vous remercie stealth35, je mets en résolu le topic.

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

Discussions similaires

  1. Accéder à une base MySQL 'distante' via Python
    Par tse_tilky_moje_imja dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 24/07/2006, 11h49
  2. [VB6]connexion à une base de données distant via ADO
    Par alaminabil1 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/02/2006, 12h11
  3. [Librairies] Exécution d'un .JAR sur un serveur distant via PHP
    Par kaboume dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 09/10/2005, 14h54
  4. Acceder a un disque dur distant via le reseau
    Par tit_henry dans le forum Réseau
    Réponses: 6
    Dernier message: 05/08/2004, 14h36
  5. Exécutable gérant une base de données distante via internet
    Par paulgiot dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/07/2004, 14h00

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