有没有更有效的方法来处理C#ASP.NET上的亚马逊产品广告API(特别是MVC 5)?

我终于获得了亚马逊产品广告API,可以在我的MVC 5网站上运行。 我正在使用在亚马逊网站下载之一上提供的“SignedRequestHelper”类。 我实际上已经获得了亚马逊API的参考,但我目前似乎根本没有使用它。

到目前为止我使用的是(控制器):

SignedRequestHelper helper = new SignedRequestHelper("myAWSaccessKeyID", "mysecretKey", "webservices.amazon.co.uk"); Dictionary items = new Dictionary(); items.Add("Service", "AWSECommerceService"); items.Add("Operation", "ItemSearch"); items.Add("AWSAccessKeyId", "myAWSaccessKeyID"); items.Add("AssociateTag", "myTag"); items.Add("SearchIndex", SearchIndex);//This is a string value (selectbox) items.Add("ResponseGroup", "Images,ItemAttributes,OfferFull,Offers,OfferSummary,Reviews"); items.Add("Keywords", keyword);//This is a string value string requestUrl = helper.Sign(items); ViewBag.Stuff = requestUrl;//Just so I could see the whole URL! WebRequest request = HttpWebRequest.Create(requestUrl); WebResponse response = request.GetResponse(); XmlDocument doc = new XmlDocument(); doc.Load(response.GetResponseStream()); XmlNodeList titleNodes = doc.GetElementsByTagName("Item"); ViewBag.Titles = titleNodes; 

你可能会注意到我部分地从便笺本中复制了JAVA代码的样式。

从视图中的那一点开始,我只是处理每个部分。 它有点混乱和可怕,并处理这样的开关:

 foreach (System.Xml.XmlNode item in ViewBag.Titles) { 

Item: @count

foreach (System.Xml.XmlNode child in item.ChildNodes) { switch (child.Name) { case "ASIN":

ASIN: @child.InnerText

break; case "MediumImage": break; case "ItemAttributes": foreach (System.Xml.XmlNode child1 in child.ChildNodes) { if(child1.Name == "Title") {

@child1.InnerText

} } break; } } count++; }

它工作,我可以使用XML文档等。我只需要知道是否有一种方法来改变它,以便它实际上使用作为参考给出的API部分。 我宁愿使用适当的工具而不是像这样使用原始XML。 我很难连接亚马逊的文档,我基本上只是想在亚马逊的暂存器上用JAVA样式代码连接。

您可以使用以下nuget Nager.AmazonProductAdvertising包。

 PM> Install-Package Nager.AmazonProductAdvertising 

示例控制器

 public ActionResult ProductSearch(string search) { var authentication = new AmazonAuthentication(); authentication.AccessKey = "accesskey"; authentication.SecretKey = "secretkey"; var wrapper = new AmazonWrapper(authentication, AmazonEndpoint.DE); var result = wrapper.Search(search); return View(result); } 

示例视图

 @model Nager.AmazonProductAdvertising.Model.AmazonItemResponse @{ ViewBag.Title = "Search"; }  @foreach (var item in Model.Items.Item) {  } 
ASIN SalesRank
@item.ASIN @item.SalesRank

查看适用于.Net的AWS开发工具包 。 您还可以找到一些指南以及如何使用它的API。


AWS SDK for .NET包括以下内容:

  • AWS SDK for .NET的当前版本。
  • AWS SDK for .NET的所有先前主要版本。
  • 演示如何将AWS SDK for .NET用于多个AWS服务的示例代码。

有一个非常彻底的库,可以处理亚马逊产品广告API(PAAPI)。 当您提出请求时,您可以收到各种回复,但是这个库可以处理它们! 它读取XML并将所有信息放在一个对象中。

我正在研究两个与PAAPI交互的MVC 5站点。 我有一个单独的文件夹和我写的几个文件,通过从库创建的对象中提取我需要的数据来发出请求和处理响应。

我做了一个C#console app demo,你可以在这里查看:

https://github.com/zoenberger/AmazonProductAdvertising

我用这个作为指导: https : //flyingpies.wordpress.com/2009/08/01/17/

但是,我遇到了几个错误:

  1. 在某些情况下,大响应要求您修改MaxReceivedMessageSize并在演示中显示。
  2. 我在库中遇到了ImageSets []的错误。 可能有人和修复在这里 。

我相信我终于找到了一种方法来使用实际的Amazon Prod Adv API。 问题是如何使用最新的API(我已添加作为参考) 签署请求。 尽管引用了VS2005,但引用的方式与入门指南类似。 这显然是10岁,但我不知何故确实让它解决了一些问题。 我从来没有得到正确的签名所以我最终使用了那个可怕的REST bodge(在我原来的问题中)!

现在帮助我的post就是这个: 亚马逊产品广告api – 项目查找请求工作示例

这是一个标记为答案的人。 它只有4票,但这是我发现的最好的东西。 我将所有类都放入控制器进行测试,但现在我必须使用模型或扩展类来正确地进行测试。 无论如何它仍然有效。