2013-04-11 23 views
0

得到錯誤,我下載Product Advertising PHP Soap Library和正在經歷的示例代碼。我配置在sampleSettings.php文件 'AWS_API_KEY', 'AWS_API_SECRET_KEY', 'AWS_ASSOCIATE_TAG', 'AWS_ANOTHER_ASSOCIATE_TAG' 的值。我發現了以下提到的錯誤在我的瀏覽器在嘗試訪問「sampleItemSearch.php」。在亞馬遜的產品API示例代碼(PHP)

SOAP的錯誤:解析WSDL:無法從「http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl」中加載:開始標記預期,「<」未找到

我試圖把幫助幫助從鏈接:https://forums.aws.amazon.com/thread.jspa?messageID=270273但沒有奏效。

注:我試圖運行在瀏覽器中的URL下,得到了以下的輸出:

$request="http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&AssociateTag=ASSOCIATETAG01-20&AWSAccessKeyId=MY_ACCESS_KEY_ID&Operation=ItemSearch&Version=2011-08-01&SearchIndex=Books&Keywords=harry%20potter&Timestamp=2013-04-10T12%3A44%3A42.000Z&Signature=ASasd5645AdSG878asdHsaHJ9YTefl1F6i0%3D";

請建議我應該做的。

回答

1

我解決了它最後。下面提到的代碼工作正常。

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 
+1

您應該使用urlencode()代替str_replace,代碼少,效率更高! – zoltar 2013-11-17 02:51:49