我终于获得了亚马逊产品广告API,可以在我的MVC 5网站上运行。我正在使用在Amazon网站下载之一上提供的“SignedRequestHelper”类。我实际上已经获得了亚马逊API的参考,但我目前似乎根本没有使用它。
到目前为止我使用的是(控制器):
SignedRequestHelper helper = new SignedRequestHelper("myAWSaccessKeyID",
"mysecretKey", "webservices.amazon.co.uk");
Dictionary<String, String> items = new Dictionary<String, String>();
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)
{
<h3>Item: @count</h3>
foreach (System.Xml.XmlNode child in item.ChildNodes)
{
switch (child.Name)
{
case "ASIN":
<p>ASIN: @child.InnerText</p>
break;
case "MediumImage":
<img src="@child.ChildNodes[0].InnerText" />
break;
case "ItemAttributes":
foreach (System.Xml.XmlNode child1 in child.ChildNodes)
{
if(child1.Name == "Title")
{
<p>@child1.InnerText</p>
}
}
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";
}
<table class="table">
<tr>
<th>ASIN</th>
<th>SalesRank</th>
</tr>
@foreach (var item in Model.Items.Item)
{
<tr>
<td>@item.ASIN</td>
<td>@item.SalesRank</td>
</tr>
}
</table>
看看AWS SDK for .Net。您还可以找到some guides以及如何使用它的API。
AWS SDK for .NET包括以下内容:
有一个库非常彻底地处理亚马逊产品广告API(PAAPI)。当您提出请求时,您可以收到各种响应,但是这个库可以处理所有这些响应!它读取XML并将所有信息放在一个对象中。
我正在研究两个与PAAPI交互的MVC 5站点。我有一个单独的文件夹和我写的几个文件,通过从库创建的对象中提取我需要的数据来发出请求和处理响应。
我做了一个C#console app demo,你可以在这里查看:
https://github.com/zoenberger/AmazonProductAdvertising
我用这个作为指导:https://flyingpies.wordpress.com/2009/08/01/17/
但是,我遇到了几个错误:
我相信我终于找到了一种方法来使用实际的Amazon Prod Adv API。问题是如何使用最新的API(我已添加作为参考)签署请求。尽管引用了VS2005,但引用也以类似于入门指南的方式添加。这显然是10岁,但我不知何故确实让它解决了一些问题。我从来没有得到正确的签名所以我最终使用了那个可怕的REST bodge(在我原来的问题中)!
现在帮助我的帖子就是这个:amazon product advertising api - item lookup request working example
这是一个标记为答案的人。它只有4票,但这是我发现的最好的东西。我把所有的类都放到控制器中来测试它,但我现在必须使用模型或扩展类来正确地完成它。无论如何它仍然有效。