2010-05-29 32 views
7

我正在努力获得我的第一批代码与AWS工作的最后一部分 - 我已经得到这么多,我附加在VS的Web引用和这有这个亚马逊(AWS) - 请求必须包含参数签名

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. 

我知道你有“符号的要求了,但想不通“其中”我会做这个或怎么样?任何帮助非常感谢?

+0

leen3o是否运行了代码?我有同样的问题。你能帮我吗 ?? – 2015-03-25 13:08:58

回答

2

您必须添加到SOAP请求标头,包括您的亚马逊访问密钥标识,时间戳和请求操作的SHA256哈希以及时间戳。为了实现这一点,您需要在即将发送之前访问SOAP消息。有一个演练和我在http://flyingpies.wordpress.com/2009/08/01/17/放在一起的示例项目。

+0

嗨 - 我发布这个之前,我遵循你的教程,但无法让它在我的Web应用程序中工作。每次它都无法理解AWSECommerceServicePortTypeClient是什么?我设法得到了一些示例代码从亚马逊到底的工作 - 但是我必须安装Microsoft WSE 3.0和删除我的网络参照:工作 血色疯狂的量得到的东西简单的工作! – leen3o 2010-05-30 08:35:46

1

为了记录在案:

另一个原因出现此错误是由于与中有空格的关键字。

实施例:

“http://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService & AWSAccessKeyId = XXX & AssociateTag = usernetmax-20 &版本= 2011-08-01 &操作= ItemSearch & ResponseGroup =中,信息& SearchIndex =所有&关键词= 婴儿推车 & MERCHANTID =所有&条件=所有&可用性=可用& ItemPage = 1个&时间戳= 2012-05-16T02:17:32Z &签名= ye5c2jo99cr3%2BPXVkMyXX8vMhTC21UO4XfHpA21%2BUCs%3D '

它应该是:

的' http:// ECS。 amazonaws.com/onca/xml?Service=AWSECommerceService & AWSAccessKeyId = XXX & AssociateTag = usernetmax-20 &版本= 2011-08-01 &操作= ItemSearch & ResponseGroup =中,信息& SearchIndex =所有&个关键词= 婴儿%20Stroller & MERCHANTID =所有&条件=所有&状况=可用& ItemPage = 1 &时间戳= 2012-05-16T02:17:32Z &签名= ye5c2jo99cr3%2BPXVkMyXX8vMhTC21UO4XfHpA21%2BUCs%3D”

PHP溶液:

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

$Keywords = urlencode($Keywords);