2017-02-22 5 views
0

Ich versuche, eine App zu erstellen, um mehrere Elemente zu suchen. Ich kann den Code mit einer einzelnen Variable für einen Gegenstand laufen lassen, aber sobald ich die Variable zu einem Array mache und foreach loop führe, gibt es mir rawurlencode erros. Es besagt, dass die erste Zeile eine Zeichenfolge sein muss. Etwas verwirrt darüber, wohin ich von hier aus gehen sollte.Amazon api php urlencode Fehler

x = array(744750545472, 705911706019); 

foreach ($x as $value) { 
$params = array(
"Service" => "AWSECommerceService", 
"Operation" => "ItemLookup", 
"AWSAccessKeyId" => "ACCESSKEY", 
"AssociateTag" => "[email protected]", 
"ItemId" => $x, 
"IdType" => "UPC", 
"ResponseGroup" => "ItemAttributes,OfferFull,Offers,SalesRank", 
"SearchIndex" => "All" 
); 

// Set current timestamp if not set 
if (!isset($params["Timestamp"])) { 
$params["Timestamp"] = gmdate('Y-m-d\TH:i:s\Z'); 
} 

// Sort the parameters by key 
ksort($params); 

$pairs = array(); 

foreach ($params as $key => $value) { 
array_push($pairs, rawurlencode($key)."=".rawurlencode($value)); 
} 

// Generate the canonical query 
$canonical_query_string = join("&", $pairs); 

// Generate the string to be signed 
$string_to_sign = "GET\n".$endpoint."\n".$uri."\n".$canonical_query_string; 

// Generate the signature required by the Product Advertising API 
$signature = base64_encode(hash_hmac("sha256", $string_to_sign, 

List item 

aws_secret_key, true)); 

// Generate the signed URL 
$request_url = 'http://'.$endpoint.$uri.'?'.$canonical_query_string.'&Signature='.rawurlencode($signature); 


$data = simplexml_load_file($request_url); 

echo $data->Items->Item->ASIN; 
+0

entfernen, wenn Original-Anmeldeinformationen geschrieben – C2486

+0

War meine Antwort hilfreich? Bitte siehe http://stackoverflow.com/help/someone-answers. Vielen Dank! – miken32

Antwort

0

können Sie verwenden, um die http_build_query() Funktion URL Query-Strings von Arrays zu erstellen:

$params = array(
"Service" => "AWSECommerceService", 
"Operation" => "ItemLookup", 
"AWSAccessKeyId" => "AKIAIBHBCCTSI4ZL27GA", 
"AssociateTag" => "[email protected]", 
"ItemId" => $x, 
"IdType" => "UPC", 
"ResponseGroup" => "ItemAttributes,OfferFull,Offers,SalesRank", 
"SearchIndex" => "All", 
"Timestamp" => gmdate('Y-m-d\TH:i:s\Z'), 
} 

// Sort the parameters by key 
ksort($params); 

$canonical_query_string = http_build_query($params);