使用新的亚马逊服务搜索亚马逊示例

我找不到新的亚马逊服务的实例(或至少在过去几年内)。 最接近的工作示例只是返回一个null项,无论我在标题中放置什么。 代码是:

// Amazon ProductAdvertisingAPI client AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(); // prepare an ItemSearch request ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "Books"; request.Title = "C#"; request.Condition = Condition.All; //request.ResponseGroup = new string[] { "Small" }; ItemSearch itemSearch = new ItemSearch(); itemSearch.Request = new ItemSearchRequest[] { request }; itemSearch.AWSAccessKeyId = ConfigurationManager.AppSettings["accessKeyId"]; // send the ItemSearch request ItemSearchResponse response = amazonClient.ItemSearch(itemSearch); // write out the results from the ItemSearch request foreach (var itemLst in response.Items) { if (itemLst.Item != null) { foreach (var item in response.Items[0].Item) { Console.WriteLine(item.ItemAttributes.Title); } } else Console.WriteLine("No item info was found for this response list item."); } Console.WriteLine(""); Console.ReadLine(); 

我究竟做错了什么?

我假设你已经从这里下载了代码 。 如果这是正确的,那么你需要替换这一行:

 AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient(); 

有这些线:

 BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport); binding.MaxReceivedMessageSize = int.MaxValue; AWSECommerceServicePortTypeClient amazonClient = new AWSECommerceServicePortTypeClient( binding, new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService")); // add authentication to the ECS client amazonClient.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(accessKeyId, secretKey)); 

问题有两个:

  1. 您没有将amazonClient绑定到HttpBinding
  2. 您没有签署请求

如果我的假设不正确,那么您应该从上面的链接下载代码,因为它是如何调用Amazon Product API的工作示例。

我相信你的问题可能是缺少一个副标签。 截至2011年11月,这是所有请求所必需的,我在测试的早期就注意到,当我没有包含它时,我得到了空响应(带有错误代码)。 我不确定这是否仍然是行为,但我肯定会假设,如果你没有添加它(我在你的代码中没有看到)这可能是个嫌疑人。

请查看此处的最新更改说明

如果您没有Associate ID,则需要申请一个。