2017-02-22 5 views
0

複数の項目を検索するためのアプリを作成しようとしています。私は項目のための単一の変数でコードを実行することができますが、すぐに変数を配列し、foreachループを実行すると、それは私にrawurlencode errosを与えています。最初の行は文字列でなければなりません。ここからどこへ行くのか混乱している。Amazon api php urlencodeエラー

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

オリジナルの資格が – C2486

+0

を掲載場合は削除するには、私の答えは役に立ちましたか? http://stackoverflow.com/help/someone-answersを参照してください。ありがとう! – miken32

答えて

0

あなたはアレイからURLのクエリ文字列を構築するためにhttp_build_query()機能を使用することができます。

$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);