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 :

Requête HTTP en PHP - API Ebay


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Requête HTTP en PHP - API Ebay
    Bonjour,

    Je dois faire des requêtes HTTP à l'API d'Ebay mobile.de (API REST). La documentation est là : http://services.mobile.de/docs/seller-api.html.
    Il y a aussi une sandbox api.test.sandbox.mobile.de:8080.

    Ebay m'a donné un identifiant(XXX)/mot de passe(YYY), et je voudrais faire des tests, en PHP.

    Dans un premier temps, j'imagine que je dois m'authentifier, avant d'essayer une requête quelconque. Mais je n'arrive pas à m'authentifier.

    Voici mon code PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $opts = array(
    		'http'=>array(
    				'method'=>"GET",
    				'header'=>"X-MOBILE-SELLER-TOKEN: XXX:YYY"
    		)
    );
     
    $context = stream_context_create($opts);
     
    // Accès à un fichier HTTP avec les entêtes HTTP indiqués ci-dessus
    $file = file_get_contents('http://api.test.sandbox.mobile.de:8080', false, $context);
    Je reçois une erreur 400 à l'exécution de ce code.

    Quelqu'un peut-il m'aider ?

  2. #2
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Bonjour,
    Utilise Curl ça va etre plus facile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            $headers = array('X-MOBILE-SELLER-TOKEN: XXX:YYY');
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, 'TonUrl');
            curl_setopt($ch, CURLOPT_HEADER, $headers);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     
            $result = curl_exec($ch);
            $infos = curl_getinfo($ch);
            curl_close($ch);

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Oui effectivement, je pense qu'il faut utiliser CURL en PHP...

    J'ai cette requête CURL en ligne de commande (et qui fonctionne) :

    curl -k -x api.test.sandbox.mobile.de:8080 -basic -u XXX:YYY -X GET "https://services.mobile.de/seller-api/sellers/1086/ads" -H "Accept: application/vnd.de.mobile.api+json

    J'ai essayé ça en PHP :
    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
     
    $ch = curl_init();
     
    $proxy = 'api.test.sandbox.mobile.de';
    $proxy_port = "8080";
    $loginpassw = 'XXX:YYY';
     
    $url='https://services.mobile.de/seller-api/sellers/1086/ads';
    $headers = "Accept: application/vnd.de.mobile.api+json";
     
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
    curl_setopt($ch, CURLOPT_PROXYTYPE, "HTTP");
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);
     
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     
    $data = curl_exec($ch);
    if (!$data) var_dump(curl_error($ch));
    var_dump ($data);
     
    curl_close($ch);
    Je reçois bien un code 200, mais normalement je devrais recevoir plein de datas au format JSON, et là... rien !
    Une idée de ce qui cloche dans mon code ?

  4. #4
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Tu peux essayer d'afficher plus d'informations sur le call curl réalisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $infos = curl_getinfo($ch);
    Sinon tu parlais dans le premier post de X-MOBILE-SELLER-TOKEN, il ne faut pas le passer dans les headers également ?

    Cet outil permet de passer du curl ligne de commande au curl php si tu veux jeter un oeil : https://incarnate.github.io/curl-to-php/

    De plus CURLOPT_PROXYTYPE attend un INT en paramètre -> essaie avec CURLPROXY_HTTP (0)

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse, j'ai finalement trouvé la solution.

    Ce qui n'allait pas :
    - je mettais le mot de passe pour le proxy, alors que c'était le mot de passe pour l'url

    Pour ce cURL en ligne de commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -k -x api.test.sandbox.mobile.de:8080 -basic -u XXX:YYY -X GET "https://services.mobile.de/seller-api/sellers/1086/ads" -H "Accept: application/vnd.de.mobile.api+json
    voici le cURL PHP correspondant :
    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
    29
    30
    31
    32
    33
    34
     
           $ch = curl_init();
     
    	$proxy = 'api.test.sandbox.mobile.de';
    	$proxy_port = "8080";
    	$loginpassw = 'XXX:YYY';
     
    	$url='https://services.mobile.de/seller-api/sellers/'.$sellerId.'/ads';  // liste de tous les véhicules du vendeur 1086
     
    	$headers = array();
    	$headers[] = "Accept: application/vnd.de.mobile.api+json";
     
    	curl_setopt($ch, CURLOPT_PROXY, $proxy);
    	curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
    	curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
     
    	curl_setopt($ch, CURLOPT_URL, $url);
    	curl_setopt($ch, CURLOPT_USERPWD, $loginpassw);
    	curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
    	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     
    	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     
    	$result = curl_exec($ch);
    	if (curl_errno($ch)) {
    		echo 'Error:' . curl_error($ch);
    	}
     
    	$aJson   = json_decode($result);
    	var_dump($aJson);
     
    	curl_close($ch);
    Merci de l'aide de tous !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/02/2016, 00h57
  2. PHP HTTP POST et API Flickr envoi d'un formulaire et retour
    Par YannCo dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 09/01/2011, 01h21
  3. Exécuter requête HTTP via PHP
    Par calitom dans le forum Langage
    Réponses: 0
    Dernier message: 15/07/2010, 15h11
  4. Requête HTTP sur "url php" avec paramètre
    Par gaille73 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 20/01/2009, 18h27
  5. [C++ ou PHP] Lancer requête HTTP en POST
    Par astrofan dans le forum Windows
    Réponses: 5
    Dernier message: 31/10/2008, 01h52

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