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

Posted

技术标签:

【中文标题】使用新的亚马逊服务搜索亚马逊示例【英文标题】:Search amazon example with new amazon service 【发布时间】:2011-12-29 21:14:04 【问题描述】:

我找不到新的亚马逊服务的工作示例(或者至少在过去几年内)。无论我在标题中添加什么内容,最接近的工作示例都会返回一个空项目。代码是:

        // 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();

我做错了什么?

【问题讨论】:

【参考方案1】:

我假设您已经下载了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));

问题有两个方面:

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

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

【讨论】:

我之前的代码和另一个示例中的当前代码建议在 response.Items[0].Item 为空时引发相同的错误。我查看调试器,果然是 null。 恐怕不能再帮你了。此代码之外还有其他问题。也许您的其中一个键不正确?我的答案中链接中的代码适用于我的密钥。对不起。【参考方案2】:

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

Look at top change note here

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

【讨论】:

以上是关于使用新的亚马逊服务搜索亚马逊示例的主要内容,如果未能解决你的问题,请参考以下文章

使用 API 在亚马逊上更新商品数量时出错

对亚马逊产品广告 API 的 Java REST 请求失败

亚马逊产品 API 是不是有最新的 c# 示例?

如何访问亚马逊类别列表的第 101 页

亚马逊推出了DocumentDB数据库服务来与MongoDB竞争

快速构建图片搜索引擎,这是亚马逊的以图搜图技术方案