2011-11-07 110 views
0

我想要使用新产品亚马逊API来搜索亚马逊上的产品。我一直在看他们的示例代码和其他人的例子,但我没有收到任何结果,并想知道是否有其他人最近使用过API并可以提供一些帮助?亚马逊API,产品广告API,ItemSearch,C#

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),所以我得到一个空的异常错误。

+1

“响应”究竟包含什么内容? –

+0

“未将对象引用设置为对象的实例”。当它到达foreach循环。 – Standage

+0

希望我能告诉你什么是错的。我运行了我从[1]下载的代码,并按预期运行。 [1] http://flyingpies.wordpress。com/2009/08/01/17/ –

回答

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 tag; 分配accessKeyId和secretKey值, 添加。 (2.)行为标记 - > endpointBehaviors标记 - >行为标记 - > signingBehavior标记; 分配accessKeyId和secretKey值。 (3.)绑定标签 - > basicHttpBinding标签; (可选) 删除除AWSECommerceServiceBindingNoTransport 和AWSECommerceServiceBindingTransport之外的绑定标记。 (4.)客户端标签; 删除AWSECommerceServiceBindingTransport以外的端点标记。

program.cs: add itemSearch.AssociateTag = ConfigurationManager.AppSettings [“associateTag”]; ItemSearchResponse响应之前= amazonClient.ItemSearch(itemSearch);

reference.cs:(在服务引用打开文件夹使用的Visual Studio) 变化私人ImageSet [] [] imageSetsField;私人ImageSet [] imageSetsField; 变化公共ImageSet [] [] ImageSets {...}公共ImageSet [] ImageSets {...}

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

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