アマゾンMWS CreateInboundShipmentPlanで行数が多いとエラーが発生します。
だいたい27行で確実に、「Parameter SignatureVersion cannot be empty.」というエラーが発生します。
スポンサーリンク
アマゾンに質問してみました。
Version:2010-10-01
Action:CreateInboundShipmentPlan
リクエストID:*****************************リクエストURLは3800文字程度です。
リクエストを送信すると、エラー(400)が帰ってきて、レスポンスのURIが3724文字になっています。
CreateInboundShipmentPlanのSKUの数の上限は200件ですが、だいたい、27件程度で、このようになってしまいます。こちらに同じ事例の報告があります。
https://sellercentral.amazon.com/forums/t/getting-a-bad-request-error-400-when-i-send-more-then-26-items/338616
(Getting a “Bad Request” Error 400 when I send more then 26 items)
いろいろ試してみた結果、サーバー側にURLの長さ制限があるような気がします。
サーバー側にURLの長さ制限がありますか?
3ヶ月経過して返信が来ました。
Amazonテクニカルサポートよりご連絡致します。
HTTPのリクエスト行のサイズの制限について確認にお時間を頂戴してしまい申し訳ございませんでした。
担当部署による貴社からのリクエストに関するログの調査結果によりますと、
記録されていたリクエストでは必須リクエストパラメーターである
SignatureVersion が記録されておりませんでした。
MWSのエンドポイントではお知らせ頂いたようなリクエストのサイズでの明示的な制限はございませんが、
通信経路上または、当サイト内で複数存在するリクエストの処理システムの中でリクエストの後方が
欠落していた可能性がございますが、現在のところ当サイト内では原因は特定できておりません。
尚、原因が特定されていない中で大変恐縮ではございますが、
POSTメソッドををご利用頂いているご利用者様からは同様のご申告を頂いていないため、
GETの代わりにPOSTのご利用をご検討頂きますようお願い申し上げます。
この度は調査に時間を要したにもかかわらず原因の特定に至らなかったことをお詫び申し上げます。
指示通り、GETからPOSTに変更したらエラーが発生しなくなりました。
VB.netで、WebClientのUploadValuesを使うと、
というエラーが発生するので、UploadStringを使用することで回避できました。
CreateInboundShipmentで、この問題が発生する場合、その後、CreateInboundShipmentでも同じことがおきるので、こちらもPOSTに変更しておく必要があります。