Amazon (AWS) - запрос должен содержать параметр Signature - PullRequest
7 голосов
/ 29 мая 2010

Я борюсь с заключительной частью получения моего первого бита кода, работающего с AWS - я получил это далеко, я приложил веб-ссылку в VS, и это имеет

amazon.AWSECommerceService service = new amazon.AWSECommerceService();

// prepare an ItemSearch request
amazon.ItemSearchRequest request = new amazon.ItemSearchRequest();
request.SearchIndex = "DVD";
request.Title = "scream";
request.ResponseGroup = new string[] { "Small" };

amazon.ItemSearch itemSearch = new amazon.ItemSearch();
itemSearch.AssociateTag = "";
itemSearch.Request = new ItemSearchRequest[] { request };
itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["AwsAccessKeyId"];

itemSearch.Request = new ItemSearchRequest[] { request };
ItemSearchResponse response = service.ItemSearch(itemSearch);

// write out the results
foreach (var item in response.Items[0].Item)
{
    Response.Write(item.ItemAttributes.Title + "<br>");
}

Я получаю ошибку

The request must contain the parameter Signature.

Я знаю, что вы должны «подписывать» запросы сейчас, но не можете понять, «где» я это сделаю или как? любая помощь высоко ценится?

Ответы [ 2 ]

2 голосов
/ 29 мая 2010

Необходимо добавить к заголовкам запроса SOAP, включая идентификатор ключа доступа Amazon, временную метку и хэш SHA256 операции запроса и временной метки. Для этого вам потребуется доступ к SOAP-сообщению непосредственно перед его отправкой. Вот пошаговое руководство и пример проекта, который я собрал на http://flyingpies.wordpress.com/2009/08/01/17/.

1 голос
/ 16 мая 2012

Для записи:

Другая причина возникновения этой ошибки - ключевые слова с пробелами.

Пример:

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=xxx&AssociateTag=usernetmax-20&Version=2011-08-01&Operation=ItemSearch&ResponseGroup=Medium,Offers&SearchIndex=All&Keywords=Baby Прогулочная коляска & MerchantId = Все & Condition = Все & Доступность = Доступный & ItemPage = 1 & Отметка = 2012-05-16T02: 17: 32Z & Signature = ye5c2jo99cr3% 2BPXVkMyXX8vMhTC21UO4XfHpA21% 2BUCs% 3D '

Должно быть:

http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=xxx&AssociateTag=usernetmax-20&Version=2011-08-01&Operation=ItemSearch&ResponseGroup=Medium,Offers&SearchIndex=All&Keywords=Baby%20Stroller&MerchantId=All&Condition=All&Availability=Available&ItemPage=1&Timestamp=2012-05-16T02:17:32Z&Signature=ye5c2jo99cr3%2BPXVkMyXX8vMhTC21UO4XfHpA21%2BUCs%3D'

PHP решение:

$Keywords = str_replace(' ', '%20', $Keywords);

или

$Keywords = urlencode($Keywords);
...