Amazon API,产品广告API,ItemSearch,C#

时间:2011-11-07 19:59:36

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

我正在尝试使用新产品amazon 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),因此我得到一个null异常错误。

2 个答案:

答案 0 :(得分: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。)行为标记 - &gt; endpointBehaviors标记 - &gt;行为标签 - &gt; signingBehavior标签;   分配accessKeyId和secretKey值。 (3。)绑定标记 - &gt; basicHttpBinding标签; (可选的)   删除除AWSECommerceServiceBindingNoTransport之外的绑定标记   和AWSECommerceServiceBindingTransport。 (4。)客户端代码;   删除除AWSECommerceServiceBindingTransport之外的端点标记。

<强>的Program.cs:   add itemSearch.AssociateTag = ConfigurationManager.AppSettings [“associateTag”];在ItemSearchResponse response = amazonClient.ItemSearch(itemSearch);

之前

reference.cs:(使用visual studio在服务引用文件夹中打开文件)   更改私有ImageSet [] [] imageSetsField;私有的ImageSet [] imageSetsField;   更改 public ImageSet [] [] ImageSets {...}到公共ImageSet [] ImageSets {...}

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

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

答案 1 :(得分:0)

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