获取Amazon产品API示例代码(PHP)中的错误
我下载了,正在浏览示例代码。我在sampleSettings.php文件中配置了“AWS_API_KEY”、“AWS_API_SECRET_KEY”、“AWS_ASSOCIATE_TAG”、“AWS_另一个_ASSOCIATE_TAG”的值。在尝试访问“sampleItemSearch.php”时,我在浏览器中遇到了下面提到的错误获取Amazon产品API示例代码(PHP)中的错误,php,amazon-web-services,amazon,Php,Amazon Web Services,Amazon,我下载了,正在浏览示例代码。我在sampleSettings.php文件中配置了“AWS_API_KEY”、“AWS_API_SECRET_KEY”、“AWS_ASSOCIATE_TAG”、“AWS_另一个_ASSOCIATE_TAG”的值。在尝试访问“sampleItemSearch.php”时,我在浏览器中遇到了下面提到的错误 SOAP-ERROR:解析WSDL:无法从“”加载:需要开始标记,我终于解决了这个问题。下面提到的代码运行良好 AWSAccessKeyId = "***
SOAP-ERROR:解析WSDL:无法从“”加载:需要开始标记,我终于解决了这个问题。下面提到的代码运行良好
AWSAccessKeyId = "*******************";
$SecretAccessKey = "******************************";
$AssociateTag = "***************";
$ItemId = '****'; //10 or 13 digit isbn
$Timestamp = gmdate("Y-m-d\TH:i:s\Z");
$Timestamp = str_replace(":", "%3A", $Timestamp);
$ResponseGroup = "ItemAttributes,Images";
$ResponseGroup = str_replace(",", "%2C", $ResponseGroup);
$String = "AWSAccessKeyId=$AWSAccessKeyId&AssociateTag=$AssociateTag&IdType=ISBN&ItemId=$ItemId&Operation=ItemLookup&ResponseGroup=$ResponseGroup&SearchIndex=Books&Service=AWSECommerceService&Timestamp=$Timestamp&Version=2011-08-01";
$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);
print_r($xml); // output
您应该使用urlencode()而不是str_replace,代码越少,效率越高!