【问题标题】:Amazon Product Advertising API: XML request problems亚马逊产品广告 API:XML 请求问题
【发布时间】:2013-08-16 23:48:53
【问题描述】:

我想获得一个“立即购买”链接,并且游戏产品的实际亚马逊价格与游戏名称一起获得。为此,我必须使用“按标题搜索”(http://docs.aws.amazon.com/AWSECommerceService/latest/DG/EX_SearchingbyTitle.html)。

我找到了一个 XML-Request 的示例并尝试为我构建它。

例子是:

    $AWSAccessKeyId = "";
$SecretAccessKey = "";

$ItemId = "0679722769"; // ASIN
$Timestamp = gmdate("Y-m-d\TH:i:s\Z");
$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 = "GET\nwebservices.amazon.com\n/onca/xml\n";
$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-d\TH:i:s\Z");
$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 = "GET\nwebservices.amazon.com\n/onca/xml\n";
$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);

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

谢谢

【问题讨论】:

    标签: amazon-web-services xmlhttprequest amazon


    【解决方案1】:

    我在这里看到了两个潜在的问题。首先是“游戏”似乎不是 SearchIndex 的有效输入,但 VideoGames 是您正在寻找的。 See here for a list of all of them.

    (美国以外可以find applicable lists here

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

    【讨论】:

    • 编辑 SearchIndex,但它不起作用:“我们计算的请求签名与您提供的签名不匹配。请检查您的 AWS 秘密访问密钥和签名方法。有关详细信息,请参阅服务文档。”。签名和密钥正确。
    • 这是另一个错误还是您之前遇到的同一个错误?这似乎是一个与我想的不同的问题。此外,它仍然适用于原始搜索查询还是现在都不起作用?沿着这些思路检查几个相当常见的错误:确保您没有切换密钥 ID 和密钥 - 它们很容易意外反转。并仔细检查您的帐户以确保该货币对仍然有效。 @user1878413
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多