0

Product Advertising PHP Soap Libraryをダウンロードし、サンプル コードを試してみました。sampleSettings.php ファイルで「AWS_API_KEY」、「AWS_API_SECRET_KEY」、「AWS_ASSOCIATE_TAG」、「AWS_ANOTHER_ASSOCIATE_TAG」の値を設定しました。「sampleItemSearch.php」にアクセスしようとすると、ブラウザに以下のエラーが表示されます。

SOAP-ERROR: 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";

私が何をすべきか提案してください。

4

1 に答える 1

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
于 2013-07-27T05:46:13.957 に答える