Я создал программу 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