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

时间:2011-11-15 20:46:02

标签: c# wcf amazon amazon-product-api

我找不到新的亚马逊服务的实例(或至少在过去几年内)。无论我在标题中添加什么,最接近的工作示例都会返回一个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("<Done...press enter to continue>");
        Console.ReadLine();

我做错了什么?

2 个答案:

答案 0 :(得分:3)

我假设你已经下载了code from here。如果这是正确的,那么你需要替换这一行:

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. 您没有签署请求
  3. 如果我的假设不正确,那么从上面的链接下载代码,因为它是如何调用Amazon Product API的工作示例。

答案 1 :(得分:2)

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

Look at top change note here

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