【问题标题】:Amazon API, Product Advertising API , ItemSearch, C#亚马逊 API、产品广告 API、ItemSearch、C#
【发布时间】:2011-11-07 19:59:36
【问题描述】:

我正在尝试使用新产品亚马逊 API 在亚马逊上搜索产品。我一直在查看他们的示例代码和其他人的示例,但我没有得到任何结果,并且想知道是否有其他人最近使用过该 API 并且可以提供一些帮助?

using System;
using System.ServiceModel;
using Simple.Amazon.ECS;

namespace Simple {
    class Program {
        // your Amazon ID's
        private const string accessKeyId = "*******************";
        private const string secretKey = "************************************";

        // the program starts here
        static void Main(string[] args) {

            // create a WCF Amazon ECS client
            BasicHttpBinding binding        = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
            binding.MaxReceivedMessageSize  = int.MaxValue;
            AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient(
                binding,
                new EndpointAddress("https://webservices.amazon.com/onca/soap?Service=AWSECommerceService"));

            // add authentication to the ECS client
            client.ChannelFactory.Endpoint.Behaviors.Add(new AmazonSigningEndpointBehavior(accessKeyId, secretKey));

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

            ItemSearch itemSearch       = new ItemSearch();
            itemSearch.Request          = new ItemSearchRequest[] { request };
            itemSearch.AWSAccessKeyId   = accessKeyId;

            // issue the ItemSearch request
            ItemSearchResponse response = client.ItemSearch(itemSearch);

            // write out the results
            foreach (var item in response.Items[0].Item) {
                Console.WriteLine(item.ItemAttributes.Title);
            }
        }
    }
}

所有示例/示例在结构上都与此类似,但是当涉及到 foreach 循环时,没有返回任何项目(Null),所以我得到一个空异常错误。

【问题讨论】:

  • response 究竟包含什么?
  • “对象引用未设置为对象的实例”。当它到达 foreach 循环时。
  • 希望我能告诉你出了什么问题。我已经运行了从 [1] 下载的代码,它按预期运行。 [1]flyingpies.wordpress.com/2009/08/01/17
  • 是的,我也从那里下载了示例并添加了我的访问密钥和秘密密钥,但它会掉下来,如果你刚刚完成它并且它对你有用,那将非常令人沮丧。跨度>
  • 添加 itemSearch.AssociateTag = "";进入代码似乎已经解决了这个问题,我正在取回结果。

标签: c# api soap amazon-web-services amazon


【解决方案1】:

如果上面的解决方案仍然不起作用。

试试这个..

http://www.falconwebtech.com/post/2010/06/14/Using-WCF-and-SOAP-to-Send-Amazon-Product-Advertising-API-Signed-Requests.aspx

上下载示例代码

我们需要更新服务引用,对 app.config、program.cs 和 reference.cs 做些小改动。

app.config: (1.) appSettings 标签; 分配 accessKeyId 和 secretKey 值, 添加 。 (2.) 行为标签 -> 端点行为标签 -> 行为标签 -> 签名行为标签; 分配 accessKeyId 和 secretKey 值。 (3.) 绑定标签 -> basicHttpBinding 标签; (可选的) 删除除 AWSECommerceServiceBindingNoTransport 之外的绑定标签 和 AWSECommerceServiceBindingTransport。 (4.) 客户标签; 删除 AWSECommerceServiceBindingTransport 以外的端点标签。

program.cs: 添加 itemSearch.AssociateTag = ConfigurationManager.AppSettings["associateTag"];在 ItemSearchResponse 响应之前 = amazonClient.ItemSearch(itemSearch);

reference.cs:(使用 Visual Studio 在服务引用文件夹中打开文件) 更改 private ImageSet[][] imageSetsField;私有 ImageSet[] imageSetsField; 更改 public ImageSet[][] ImageSets {...} 为 public ImageSet[] ImageSets {...}

最后我们可以运行我们的程序,它会工作的。祝你好运。。

nb:我使用的是 Microsoft Visual Studio 2010。 会有1个警告(无效的子元素签名行为),我认为我们可以忽略它,或者如果您有任何解决方案,请分享.. ^^v..

【讨论】:

    【解决方案2】:

    这是一个 wsdl 错误,我使用下面的链接来修复它: https://forums.aws.amazon.com/thread.jspa?threadID=86989

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多