[AWS] [PHP] - Lookup by ISBN

webmachine

Utente Attivo
12 Gen 2016
43
0
6
Ciao a tutti,
sto provando a sviluppare uno script con le API di AWS che, dato il codice ISBN di un libro, restituisca i relativi dettagli (Titolo, Autore etc...).
Come sicuramente saprete, Amazon richiede la firma delle GET Request, che io eseguo tramite questa Funzione PHP:
Codice:
$q="CODICE_ISBN";
$private_key = "LAMIAPKEY";
$params["AWSAccessKeyId"] = "LAMIAKEY";
$params["AssociateTag"] = "REFTAG";
$params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z");

function signAmazonUrl($url, $secret_key)
{
    $original_url = $url;
    // Decode anything already encoded
    $url = urldecode($url);
    // Parse the URL into $urlparts
    $urlparts  = parse_url($url);
    // Build $params with each name/value pair
    foreach (explode('&', $urlparts['query']) as $part) {
        if (strpos($part, '=')) {
            list($name, $value) = explode('=', $part, 2);
        } else {
            $name = $part;
            $value = '';
        }
        $params[$name] = $value;
    }
    // Include a timestamp if none was provided
    if (empty($params['Timestamp'])) {
        $params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
    }
    // Sort the array by key
    ksort($params);
    // Build the canonical query string
    $canonical       = '';
    foreach ($params as $key => $val) {
        $canonical  .= "$key=".rawurlencode(utf8_encode($val))."&";
    }
    // Remove the trailing ampersand
    $canonical       = preg_replace("/&$/", '', $canonical);
    // Some common replacements and ones that Amazon specifically mentions
    $canonical       = str_replace(array(' ', '+', ',', ';'), array('%20', '%20', urlencode(','), urlencode(':')), $canonical);
    // Build the sign
    $string_to_sign             = "GET\n{$urlparts['host']}\n{$urlparts['path']}\n$canonical";
    // Calculate our actual signature and base64 encode it
    $signature            = base64_encode(hash_hmac('sha256', $string_to_sign, $secret_key, true));
    // Finally re-build the URL with the proper string and include the Signature
    $url = "{$urlparts['scheme']}://{$urlparts['host']}{$urlparts['path']}?$canonical&Signature=".rawurlencode($signature);
    return $url;
}

    $amazon_request=signAmazonUrl('http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&Operation=ItemLookup&ResponseGroup=Large&SearchIndex=All&IdType=ISBN&ItemId='.$q.'&AWSAccessKeyId='.$params["AWSAccessKeyId"].'&AssociateTag='.$params["AssociateTag"].'&Timestamp='.$params["Timestamp"], $private_key);
echo "$amazon_request";

L'URL che viene generato però pare non andare bene ad AWS, in quanto mi viene restituito il seguente errore, quando in realtà sto eseguendo una sola richiesta:
Codice:
<Error>
<Code>RequestThrottled</Code>
<Message>
AWS Access Key ID: *LAMIAKEY*. You are submitting requests too quickly. Please retry your requests at a slower rate.
</Message>
</Error>

Sapreste aiutarmi a risolvere il problema?

Grazie Mille :)
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
il codice che hai postato genera la seguente url, con caratteri "_" (5f) che precedono "?" e "&"
non mi sembra corrispondere a quanto richiesto da amazon
Codice:
http://webservices.amazon.com/onca/xml__?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE__&AssociateTag=REFTAG__&IdType=ISBN__&ItemId=CODICE_ISBN__& ......
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Info aws ed ec2 per creazione sito vendita orodotti digitali Server Dedicati e VPS 0
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3

Discussioni simili