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

2023-12-10

我终于在我的 MVC 5 网站上使用了 Amazon 产品广告 API。我正在使用亚马逊网站的下载之一中提供的“SignedRequestHelper”类。我实际上已经获得了 Amazon 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。我在连接 Amazon 文档时遇到了很大的困难,以至于我基本上只是尝试在 Amazon 暂存器上的 JAVA 样式代码中进行连接。


您可以使用以下 nugetNager.Amazon产品广告包裹。

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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有更有效的方法来处理 C# ASP.NET(尤其是 MVC 5)上的亚马逊产品广告 API? 的相关文章

  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 使用 Java 从 S3 上的文件在 S3 上创建 zip 文件

    我在 S3 上有很多文件 需要对其进行压缩 然后通过 S3 提供压缩文件 目前 我将它们从流压缩到本地文件 然后再次上传该文件 这会占用大量磁盘空间 因为每个文件大约有 3 10MB 而且我必须压缩多达 100 000 个文件 所以一个 z
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 将日期参数传递给对 MVC 操作的 ajax 调用的安全方法

    我有一个 MVC 操作 它的参数之一是DateTime如果我通过 17 07 2012 它会抛出一个异常 指出参数为空但不能有空值 但如果我通过01 07 2012它被解析为Jan 07 2012 我将日期传递给 ajax 调用DD MM
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 如何在单击按钮时重新绑定 igGrid igniteUI 控件中的数据?

    我在 ASP NET MVC3 应用程序中使用 Infragistics Ignite UI 控件 我有一个已绑定到 客户 数据的网格 工作正常 现在我有按钮了 单击后我会进行 ajax 调用 在控制器中 我编写了仅选择 客户 数据的一部分
  • 尝试使用 AWS CLI 运行 ECS 任务时出现资源:内存错误

    我正在尝试使用 AWS ECS 和 docker 设置 CI 我使用 Codeship 作为 CI 工具 但这并不重要 我在 shell 脚本中执行以下步骤 使用我的 Dockerfile 构建镜像 将镜像推送到ECS存储库 将task d
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr

随机推荐