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 :

SOAP et Amazone


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut SOAP et Amazone
    Salut à tous,

    Je cherche en vain un petit script pour récupérer les info d'un livre sur amazone connaissant son ISBN. J'ai vu pas mal d'exemple, mais rien ne marche

    A la suite des exemples que j'ai pu glaner je me pose plusieurs questions :

    Faut-il s'enregistrer auprès d'Amazone pour faire une requête SOAP sur leur web service.

    J'ai vu qu'il existait une librairie NUSOAP, est-ce que cette librairie fait la même chose que l'extension php5 php_soap.dll. Est-ce que leur code sont compatible ?

    J'ai vu qu'il existait plusieurs fonction dans la classe soap

    ASINSearchRequest, BrowseNodeSearchRequest... ou sont implémenté ces fonctions dans la dll soap de php5 ?

    Plusieurs adresses URL pour le client soap de amazone semblent être en vigueur ? http://soap.amazon.com/schemas2/AmazonWebServices.wsdl, http://soap.amazon.com/schemas3/AmazonWebServices.wsdl...

    Bref je patauge un peu un script simple qui marche serait la bienvenue

    Merci beaucoup

  2. #2
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Bonsoir,

    File le code si tu veux que l'on t'aide
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    Bonsoir à tous,

    Sorry pour le up, je comprends...

    Pour le code le voici

    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
    function get_book_amazon_isbn($isbn)
    {
       $client = new SoapClient ('http://soap.amazon.com/schemas2/AmazonWebServices.wsdl');
     
       $params   = array(
        'asin'	   => "$isbn",
        'mode'         => 'books',
        'sort'         => '+title',
        'type'         => 'lite',
        'tag'          => 'trachtenberg-20',
        'devtag'       => 'XXXXXXXXXXXXXX',
        'locale'	   => 'fr'
       );
       $return=$client->ASINSearchRequest($params);
       return($return);
    }
    J'ai essayé aussi cela

    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
    function get_book_amazon_isbn($isbn)
    {
     
       $client = new SoapClient ('http://soap.amazon.com/schemas2/AmazonWebServices.wsdl');
     
    //$params['Service'] = 'AWSECommerceService';
    $params['AWSAccessKeyId'] = 'Mon code Amazone'; // cle obtenue apres inscription sur aws.amazon.com
    //$params['AssociateTag'] = 'creationdesit-21';
     
     
     
       $params   = array(
        'asin'	   => "$isbn",
        'mode'         => 'books',
        'sort'         => '+title',
        'type'         => 'lite',
        'tag'          => 'trachtenberg-20',
        'devtag'       => 'XXXXXXXXXXXXXX',
        'locale'	   => 'fr'
       );
       $return=$client->ASINSearchRequest($params);
       return($return);
    }
    Mais cela ne donne rien erreur : Uncaught SoapFault exception: [HTTP] Gone
    J'ai essayé avec la librairie NUSOAP idem

  4. #4
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Bonjour,

    Tu es sur de ton lien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $client = new SoapClient ('http://soap.amazon.com/schemas2/AmazonWebServices.wsdl');
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

  5. #5
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut
    J'espère que t'a pas oublier de spécifier le isbn ?!

    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
    $isbn = "xxxxxx";
    function get_book_amazon_isbn($isbn)
    {
     
       $client = new SoapClient ('http://soap.amazon.com/schemas2/AmazonWebServices.wsdl');
     
    //$params['Service'] = 'AWSECommerceService';
    $params['AWSAccessKeyId'] = 'Mon code Amazone'; // cle obtenue apres inscription sur aws.amazon.com
    //$params['AssociateTag'] = 'creationdesit-21';
     
     
     
       $params   = array(
        'asin'	   => "$isbn",
        'mode'         => 'books',
        'sort'         => '+title',
        'type'         => 'lite',
        'tag'          => 'trachtenberg-20',
        'devtag'       => 'XXXXXXXXXXXXXX',
        'locale'	   => 'fr'
       );
       $return=$client->ASINSearchRequest($params);
       return($return);
    }

  6. #6
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut
    Sinon tu peut essayer ça:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
    /**
     * Query Amazon about a particular book by ISBN and obtain metadata.
     * The author disclaims all copyright and places this in the public domain.
     *
     * Amazon's Terms of Use for this service require you to:
     * - Send no more than 1 request every second
     * - Direct traffic to them in some way. You can use the URL provided in the
     *   resulting metadata to achieve this.
     */
    class ISBN {
      function getMetadataFromIsbn($isbn) {
        // Get your own accesskey at http://aws.amazon.com/
        $awsAccessKeyID = 'YOUR_ACCESS_KEY_ID_HERE';
        $awsSecretKey = 'YOUR_SECRET_KEY_HERE';
        $awsAssociateTag = 'YOUR_ASSOCIATE_TAG_HERE';
     
        $host = 'ecs.amazonaws.com';
        $path = '/onca/xml';
     
        $args = array(
          'AssociateTag' => $awsAssociateTag,
          'AWSAccessKeyId' => $awsAccessKeyID,
          'IdType' => 'ISBN',
          'ItemId' => $isbn,
          'Operation' => 'ItemLookup',
          'ResponseGroup' => 'Medium',
          'SearchIndex' => 'Books',
          'Service' => 'AWSECommerceService',
          'Timestamp' => gmdate('Y-m-d\TH:i:s\Z'),
          'Version'=> '2009-01-06'
        );
     
        ksort($args);
        $parts = array();
        foreach(array_keys($args) as $key) {
          $parts[] = $key . "=" . $args[$key];
        }
     
        // Construct the string to sign
        $stringToSign = "GET\n" . $host . "\n" . $path . "\n" . implode("&", $parts);
        $stringToSign = str_replace('+', '%20', $stringToSign);
        $stringToSign = str_replace(':', '%3A', $stringToSign);
        $stringToSign = str_replace(';', urlencode(';'), $stringToSign);
     
        // Sign the request
        $signature = hash_hmac("sha256", $stringToSign, $awsSecretKey, TRUE);
     
        // Base64 encode the signature and make it URL safe
        $signature = base64_encode($signature);
        $signature = str_replace('+', '%2B', $signature);
        $signature = str_replace('=', '%3D', $signature);
     
        // Construct the URL
        $url = 'http://' . $host . $path . '?' . implode("&", $parts) . "&Signature=" . $signature;
        $rawData = file_get_contents($url);
     
        $metadata = simplexml_load_string($rawData);
        if (isset($metadata->Items->Request->Errors)) {
          return $metadata->Items->Request->Errors;
        } else {
          return $metadata->Items->Item;
        }
      }
    }
    ?>

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    J'ai essayer aussi avec

    http://soap.amazon.com/schemas3/AmazonWebServices.wsdl
    que l'on trouve sur certains script, avec http://ecs.amazonaws.com/AWSECommerc...ceService.wsdl

    Mais rien ne change. C bizarre quand même on trouve de la docs sur SOAP mais d'un ésotérisme caractérisé.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup pour vos réponses, j'essaye tout ça et je vous tiens au courant

    Merci encore !

  9. #9
    Membre du Club
    Inscrit en
    Août 2010
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 156
    Points : 61
    Points
    61
    Par défaut
    OK

    SiNon Tu ne peut pas directement parser la page ?

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Je suis moi-même en train d'essayer de coder un truc comme ça (je dis "essayer" et "un truc" car je ne suis absolument pas un spécialiste du php et en informatique, je suis un amateur).
    Je souhaite rechercher des livres dans les bases de données d'amazon pour constituer une liste complète des bouquins de ma bibliothèque (avec leur 4eme de couverture...).
    Pour l'instant, amazon me répond que ma requete est mal signée.

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
    	<!-- cette page sert à traiter les infos de recherches de livres -->
           <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
       </head>
    	<?php
     
    	  // la base de la requete
    	  $auteur = $_POST['auteur'];
    	  $niveau = "Medium"; 		//le niveau de la recherche dans Amazon...
    	  $titre  = $_POST['titre'];
    	  //$type	 = $_POST['type'];
    	  $type = "Books";
     
    	 // identifiants amazon secrets
    	  $Id_Amazon = "XXXXXXXXX";
    	  $Amazon_secret ="XXXXXXXXXXXXXX";
     
    	  // la base de l'url est le truc qu'il faudra modifier si le site change...
    	  $method = "GET";
    	  $zone = "fr";
    	  $host = "ecs.amazonaws.". $zone;
     
    	  // construction de la requete
    	  $operation = "ItemSearch";
    	  $service = "AWSECommerceService";
    	  $reponse="ItemAttributes"; 		// ce qu'on veut qu'amazon renvoie
    	  $recherche='Author='.$auteur; 	// la liste des trucs recherchés (auteur, titre...)
    	$time=time();
    	$version="2010-10-01";			// version de l'api d'amazon
     
    // ce gros bloc est l'ensemble de la requete.
    	$requete ='AWSAccessKeyId='.$Id_Amazon.'&Version='.$version.'&Operation='.$operation.'&SearchIndex='.$type.$recherche.'&ResponseGroup='.$reponse.'&Timestamp='.$time;
    	$to_sign ="$method\n".$host."\n"."/onca/xml\n".$requete;
     
    // la signature est un hash_hmac et doit etre encodée pour enlever + =...
    	$Sig = rawurlencode(base64_encode(hash_hmac('sha256', $to_sign, $Amazon_secret, true)));
    	$url = 'http://'.$host.'/onca/xml?'.$requete.'&Signature='.$Sig;
    	echo $url;
     
    	//récupération de la réponse d'Amazon
    	$contenu = file_get_contents($url);
    	$xml     = simplexml_load_string($contenu);
    	$nombre_resul = $xml->Items->TotalResults;
    	echo $nombre_resul;
    	?>
        <body>
     
        </body>
    </html>
    Et je reçois ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0"?>
    <ItemSearchErrorResponse xmlns="http://ecs.amazonaws.com/doc/2010-10-01/"><Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message></Error><RequestID>24448f5e-035d-4b71-b883-f914d21288e3</RequestID></ItemSearchErrorResponse>
    The Jos, quelle est l'utilité finale de ton script ? Que cherche-tu à faire ?

  11. #11
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut
    Citation Envoyé par Stalk3R Voir le message
    OK

    SiNon Tu ne peut pas directement parser la page ?
    Nop le but est de passer par le protocole SOAP,

    Mais le soucis est au niveau de la requête a amazon il renvoi une erreur de signature.
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

Discussions similaires

  1. Web Service Amazon SOAP
    Par sharkichoux dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 26/04/2011, 10h23
  2. [TOMCAT] SOAP - Problème de déploiement
    Par seawolfm dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 21/10/2003, 12h36
  3. Fichier SOAP
    Par alaie dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 21/05/2003, 15h05
  4. [SOAP] : client en PHP, serveur en kylix + .so
    Par RezzA dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 27/01/2003, 16h53
  5. Tomcat + Apache-SOAP
    Par lucho31 dans le forum Services Web
    Réponses: 3
    Dernier message: 17/10/2002, 09h55

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