0

パラメータを使用して URL 文字列を作成し、リクエストに署名するなど、Product Advertising API を使用して LookupItem リクエストを完全に生成できますが、MWS RequestReport リクエスト用に変更したモデルを取得しようとすると、このエラー メッセージが表示されます。 :

「無効なセクション名またはバージョンが指定されました - onca/2011-01-01」

不思議な理由で、明らかに私のパラメータが次の場合に、日付の先頭に「 onca/ 」を追加し続けます。

Map<String, String> params = new HashMap<String, String>();
    params.put("Action", "RequestReport");
    params.put("Version", "2011-01-01"); //NOT "onca/2011-01-01" (version may be old)
    params.put("SellerId", MERCHANT_ID);
    params.put("SignatureVersion", "2");
    params.put("SignatureMethod", "HmacSHA256");
    params.put("ReportType", "_GET_MERCHANT_LISTINGS_DATA_");
    //timestamp and signature params are added in the method that signs this request
    requestUrl = helper.sign(params);

ここで何が欠けていますか?メソッドは、この「正規のクエリ文字列」に署名しても、それを追加しません。これは、先ほど述べた LookupItem リクエストへの署名に成功したことからも明らかです。これは、Amazon が署名を解釈する方法と関係がありますか? しかし、URL/エンコーディングが一致しないということではないでしょうか? 理論はありますか?さらにコードや情報が必要ですか?

4

1 に答える 1

0

私は解決策を発見しました: AWS では、リクエストは ecs.amazonaws.com/onca/xml で始まりますか? と mws.amazonservices.com の MWS? (私たちで)。エンドポイントを MWS エンドポイントに変更したとき、コードのどこかにある直後の「/onca/xml」の連結を削除できませんでした。なんらかの理由で、Amazon は私の「バージョン」パラメータを「/onca/xml」で始まると解釈しましたが、URL ではそうではないか、署名の最初のパラメータでした。しかたがない。

AWS 署名付きリクエスト ヘルパーを変更する場合は、エンドポイントを変更した後に「/onca/xml」の連結をすべて削除してください。

于 2013-12-23T17:47:36.650 に答える