ASP.NET 亚马逊商品搜索

Posted

技术标签:

【中文标题】ASP.NET 亚马逊商品搜索【英文标题】:ASP.NET Amazon ItemSearch 【发布时间】:2011-06-12 21:49:27 【问题描述】:

有没有人知道任何好的例子,或者愿意解释如何进行类似于此的亚马逊查找,http://blogs.msdn.com/b/coding4fun/archive/2006/10/31/912260.aspx,我会使用它,但它似乎已经过时并且源不再可用.理想 我想做的是在“星际迷航”之类的关键字或 UPC 上查找项目。我想要返回的是标题、描述、年份和图片链接、类型(dvd、书籍、音乐)。任何帮助都会很棒,谢谢。

【问题讨论】:

【参考方案1】:

我写了一个小C# Wrapper for Amazon ItemLookup 给你一个方便的对象图。它现在只支持 ItemLookup。我有源代码on BitBucket。

您可以拨打以下电话:

var item = client.LookupByAsin("B0037X9N5U");
double? price = item.GetLowestPrice();

【讨论】:

【参考方案2】:

适用于 .NET 的 SprightlySoft AWS 组件允许您与亚马逊的产品广告 API 进行交互。这是基于 UPC 查找项目的示例代码。在http://sprightlysoft.com/ 免费获取组件。该组件附带示例代码,向您展示如何使用 Product Advertising API 进行 ItemSearch。

//Product Advertising API, ItemLookup: http://docs.amazonwebservices.com/AWSECommerceService/2010-10-01/DG/ItemLookup.html

SprightlySoftAWS.REST MyREST = new SprightlySoftAWS.REST();

String RequestURL;
RequestURL = "https://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&Operation=ItemLookup&Version=2010-10-01";
RequestURL += "&AWSAccessKeyId=" + System.Uri.EscapeDataString(TextBoxAWSAccessKeyId.Text) + "&SignatureVersion=2&SignatureMethod=HmacSHA256&Timestamp=" + Uri.EscapeDataString(DateTime.UtcNow.ToString("yyyy-MM-dd\\THH:mm:ss.fff\\Z"));
RequestURL += "&ItemId=025192022272";
RequestURL += "&IdType=UPC";
RequestURL += "&SearchIndex=DVD";

String RequestMethod;
RequestMethod = "GET";

String SignatureValue;
SignatureValue = MyREST.GetSignatureVersion2Value(RequestURL, RequestMethod, "", TextBoxAWSSecretAccessKey.Text);

RequestURL += "&Signature=" + System.Uri.EscapeDataString(SignatureValue);

Boolean RetBool;
RetBool = MyREST.MakeRequest(RequestURL, RequestMethod, null);
System.Diagnostics.Debug.Print(MyREST.LogData);

if (RetBool == true)

    String ResponseMessage = "";
    System.Xml.XmlDocument MyXmlDocument;
    System.Xml.XmlNamespaceManager MyXmlNamespaceManager;
    System.Xml.XmlNode MyXmlNode;
    System.Xml.XmlNodeList MyXmlNodeList;

    MyXmlDocument = new System.Xml.XmlDocument();
    MyXmlDocument.LoadXml(MyREST.ResponseString);

    MyXmlNamespaceManager = new System.Xml.XmlNamespaceManager(MyXmlDocument.NameTable);
    MyXmlNamespaceManager.AddNamespace("amz", "http://webservices.amazon.com/AWSECommerceService/2010-10-01");

    MyXmlNodeList = MyXmlDocument.SelectNodes("amz:ItemLookupResponse/amz:Items/amz:Item", MyXmlNamespaceManager);

    if (MyXmlNodeList.Count == 0)
    
        ResponseMessage = "Item not found.";
    
    else
    
        foreach (System.Xml.XmlNode ItemXmlNode in MyXmlNodeList)
        
            MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ItemAttributes/amz:Title", MyXmlNamespaceManager);
            ResponseMessage += "Title = " + MyXmlNode.InnerText;

            ResponseMessage += Environment.NewLine;
        
    

    MessageBox.Show(ResponseMessage);

else

    MessageBox.Show(MyREST.ResponseStringFormatted);

【讨论】:

你知道是否有办法让亚马逊一次退货超过 10 件商品? 信息在文档中。见docs.amazonwebservices.com/AWSECommerceService/2010-10-01/DG/…。每个 ItemLookup 请求最多可以返回十个相关项。 那些字符串连接有点恶心。【参考方案3】:

您好,使用以下 nuget 非常容易 Nager.AmazonProductAdvertising包

nuget

PM> Install-Package Nager.AmazonProductAdvertising

示例

var authentication = new AmazonAuthentication("accesskey", "secretkey");
var client = new AmazonProductAdvertisingClient(authentication, AmazonEndpoint.US);
var result = await client.GetItemsAsync("B0037X9N5U");

【讨论】:

【参考方案4】:

亚马逊网站上有一整套示例: http://aws.amazon.com/code/Product%20Advertising%20API?_encoding=UTF8&jiveRedirect=1

【讨论】:

我已经挖掘了这些,它们很旧,而且真的好像有一百万种不同的 wsdl,其中一半做类似的事情,而其中一半已经过时了。

以上是关于ASP.NET 亚马逊商品搜索的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 使用 API 从亚马逊购买商品?

从 ASIN 获取亚马逊商品图片和描述

检测地理位置 asp.net mvc - 托管在亚马逊 aws

快速构建图片搜索引擎,这是亚马逊的以图搜图技术方案

ASP.NET Core 2.1对GDPR的支持

如何解锁亚马逊A9的新算法?