亚马逊产品广告API:XML请求问题



我想要一个"立即购买"链接,以及一个游戏标题的游戏产品的实际惊人价格。为此,我必须使用"按标题搜索"(http://docs.aws.amazon.com/AWSECommerceService/latest/DG/EX_SearchingbyTitle.html)。

我找到了一个XML请求的例子,并尝试为我构建它

示例为:

    $AWSAccessKeyId = "";
$SecretAccessKey = "";
$ItemId = "0679722769"; // ASIN
$Timestamp = gmdate("Y-m-dTH:i:sZ");
$Timestamp = str_replace(":", "%3A", $Timestamp);
$ResponseGroup = "ItemAttributes,Offers,Images,Reviews";
$ResponseGroup = str_replace(",", "%2C", $ResponseGroup);
$String = "AWSAccessKeyId=$AWSAccessKeyId&
AssociateTag=xy&
ItemId=$ItemId&
Operation=ItemLookup&
ResponseGroup=$ResponseGroup&
Service=AWSECommerceService&
Timestamp=$Timestamp&
Version=2009-01-06";

$String = str_replace("n", "", $String);
$Prepend = "GETnwebservices.amazon.comn/onca/xmln";
$PrependString = $Prepend . $String;
$Signature = base64_encode(hash_hmac("sha256", $PrependString, $SecretAccessKey, True));  
$Signature = str_replace("+", "%2B", $Signature);
$Signature = str_replace("=", "%3D", $Signature);
$BaseUrl = "http://webservices.amazon.com/onca/xml?";
$SignedRequest = $BaseUrl . $String . "&Signature=" . $Signature;
$XML = simplexml_load_file($SignedRequest);
echo '<a href="'.$SignedRequest.'">XML</a><p>';
print_r ($XML);

这很完美,但不符合我的搜索值。我编辑了参数,请求被破坏了。

我的请求:

    $AWSAccessKeyId = "";
$SecretAccessKey = "";
$ItemId = "Payday2"; // ASIN
$Timestamp = gmdate("Y-m-dTH:i:sZ");
$Timestamp = str_replace(":", "%3A", $Timestamp);
$ResponseGroup = "ItemAttributes";
$ResponseGroup = str_replace(",", "%2C", $ResponseGroup);
$String = "AWSAccessKeyId=$AWSAccessKeyId&
AssociateTag=xy&
Operation=ItemSearch&
SearchIndex=Game&
Title=$ItemId&
ResponseGroup=$ResponseGroup&
Service=AWSECommerceService&
Timestamp=$Timestamp&
Version=2009-01-06";

$String = str_replace("n", "", $String);
$Prepend = "GETnwebservices.amazon.comn/onca/xmln";
$PrependString = $Prepend . $String;
$Signature = base64_encode(hash_hmac("sha256", $PrependString, $SecretAccessKey, True));  
$Signature = str_replace("+", "%2B", $Signature);
$Signature = str_replace("=", "%3D", $Signature);
$BaseUrl = "http://webservices.amazon.com/onca/xml?";
$SignedRequest = $BaseUrl . $String . "&Signature=" . $Signature;
$XML = simplexml_load_file($SignedRequest);
echo '<a href="'.$SignedRequest.'">XML</a><p>';
print_r ($XML);

为什么我的请求不起作用?

感谢

我在这里看到了两个潜在的问题。首先,"游戏"似乎不是SearchIndex的有效输入,但VideoGames是你想要的。请参阅此处以获取所有项目的列表。

(美国以外的国家可以在这里找到适用的列表)

我看到的另一个潜在问题,我不确定亚马逊的API对此有多灵活,是游戏中应该有一个名为"Payday 2"的空间。这实际上带来了一个比修复空间更重要的考虑因素。根据您对将标题输入编码内容的控制程度,基于关键字而不是标题进行搜索可能会更灵活。

最新更新