Amazon Product Advertising API возвращает «SignatureDoesNotMatch», когда URL-адрес запроса содержит «!» - PullRequest
0 голосов
/ 03 декабря 2011

Я создал программу VBA, которая использует Amazon Product Advertising API. Обычно это работает хорошо, но когда URL-адрес запроса содержит ! или (, API возвращает код ошибки SignatureDoesNotMatch. Но подпись и URL, которые отправляет моя программа, полностью совпадают с тем, который генерирует http://associates -amazon.s3.amazonaws.com / подписанный запрос / помощник / index.html (поэтому сгенерированный URL также получает ошибку).

Ошибка вызвана (, ), *, ! и '.

@ / [ ] { } + - = . , : ; \ | _ ? " # $ % & ^ ~ ` нет. (Кажется, они просто игнорируются.)

Удаление этих символов из параметров является решением. Но если кто-то знает причину проблемы и / или лучшее решение, пожалуйста, дайте мне знать.

Программа находится здесь. Точка входа - "main.searchBookInfo", а "helper.getSignature" генерирует подпись.

* ** 1 022 тысяча двадцать-один * Пример:

неподписанный URL:

http://ecs.amazonaws.jp/onca/xml?AWSAccessKeyId=AKIAIL7NZCKP32A32LQQ&AssociateTag=attentiveada-20&Author=&Operation=ItemSearch&Publisher=&ResponseGroup=ItemAttributes&SearchIndex=Books&Service=AWSECommerceService&Timestamp=2011-12-03T20%3A26%3A16%2B0900&Title=!&Version=2011-08-01

Строка для подписи:

GET
ecs.amazonaws.jp
/onca/xml
AWSAccessKeyId=AKIAIL7NZCKP32A32LQQ&AssociateTag=attentiveada-20&Author=&Operation=ItemSearch&Publisher=&ResponseGroup=ItemAttributes&SearchIndex=Books&Service=AWSECommerceService&Timestamp=2011-12-03T20%3A26%3A16%2B0900&Title=!&Version=2011-08-01

Подпись:

fmQKEfrtYkdWoJNHUryWIPoybM%2FqzOdFFmlgrQkBS2E%3D

1 Ответ

1 голос
/ 03 декабря 2011

Мне удалось воспроизвести это (SignatureDoesNotMatch) с помощью , а не , кодирующего символ !.Поэтому я предполагаю, что если вы закодируете символ ! перед тем, как подписать, то это сработает.То же самое, вероятно, верно и для других символов, хотя я не проверял их.

Просто к вашему сведению, я сделал вернул результаты при использовании ! в качестве параметра Title дляItemSearch операция.

...