Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Amazon产品API示例代码(PHP)中的错误_Php_Amazon Web Services_Amazon - Fatal编程技术网

获取Amazon产品API示例代码(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 = "***

我下载了,正在浏览示例代码。我在sampleSettings.php文件中配置了“AWS_API_KEY”、“AWS_API_SECRET_KEY”、“AWS_ASSOCIATE_TAG”、“AWS_另一个_ASSOCIATE_TAG”的值。在尝试访问“sampleItemSearch.php”时,我在浏览器中遇到了下面提到的错误


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,代码越少,效率越高!