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

问题描述 投票:2回答:4

我终于获得了亚马逊产品广告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样式代码连接。

c# asp.net asp.net-mvc amazon-web-services
4个回答
3
投票

您可以使用以下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>

0
投票

看看AWS SDK for .Net。您还可以找到some guides以及如何使用它的API。


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

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

0
投票

有一个库非常彻底地处理亚马逊产品广告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 []的错误。可能有人和修复是here

0
投票

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

现在帮助我的帖子就是这个:amazon product advertising api - item lookup request working example

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

© www.soinside.com 2019 - 2024. All rights reserved.