2011-01-21 6 views
5

Có ai biết về bất kỳ ví dụ hay không, hoặc quan tâm giải thích cách thực hiện tra cứu amazon tương tự, http://blogs.msdn.com/b/coding4fun/archive/2006/10/31/912260.aspx, tôi sẽ sử dụng nó, nhưng dường như đã lỗi thời và nguồn là không còn hiệu lực. Lý tưởng Những gì tôi muốn để có thể làm là tìm kiếm các mục trên một trong hai từ khóa như "star trek" hoặc thẳng lên UPC. Những gì tôi muốn lấy lại là tiêu đề, mô tả, năm và liên kết đến một hình ảnh, nhập (dvd, sách, nhạc). Bất kỳ trợ giúp sẽ là tuyệt vời, cảm ơn.ASP.NET Amazon ItemSearch

Trả lời

1

Các SprightlySoft AWS kiện cho .NET cho phép bạn tương tác sẽ sản phẩm quảng cáo của Amazon API. Đây là mã mẫu để tìm kiếm một mục dựa trên UPC. Nhận thành phần miễn phí tại http://sprightlysoft.com/. Thành phần đi kèm với mã mẫu cho bạn biết cách thực hiện một ItemSearch với API quảng cáo sản phẩm.

//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); 
} 
+0

Bạn có biết nếu có cách nào để có được amazon để trả lại nhiều hơn 10 mặt hàng cùng một lúc? – nagates

+0

Thông tin có trong tài liệu. Xem http://docs.amazonwebservices.com/AWSECommerceService/2010-10-01/DG/index.html?ItemLookup.html. Mỗi yêu cầu ItemLookup có thể trả lại, nhiều nhất là mười mục liên quan. – Anton

+0

Các chuỗi nối đó hơi khó chịu. – UpTheCreek

0

Có một tập hợp toàn bộ các ví dụ trên trang web của Amazon: http://aws.amazon.com/code/Product%20Advertising%20API?_encoding=UTF8&jiveRedirect=1

+0

Tôi đã đào xới những thứ đó, chúng cũ kỹ và có vẻ như có một triệu wsdl khác nhau, và một nửa trong số chúng làm những việc tương tự, và một nửa trong số chúng đã lỗi thời. – nagates

+0

Vâng, một mớ hỗn độn thực sự. – UpTheCreek

4

Tôi đã viết một chút C# Wrapper for Amazon ItemLookup để đưa bạn trở lại biểu đồ đối tượng tiện dụng. Nó chỉ hỗ trợ ItemLookup ngay bây giờ. Tôi có nguồn lên on BitBucket.

Bạn có thể thực hiện cuộc gọi như:

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

Hi nó là rất dễ dàng với các NuGet Nager.AmazonProductAdvertising gói sau

NuGet

PM> Install-Package Nager.AmazonProductAdvertising 

Ví dụ

var authentication = new AmazonAuthentication(); 
authentication.AccessKey = "accesskey"; 
authentication.SecretKey = "secretkey"; 

var wrapper = new AmazonWrapper(authentication, AmazonEndpoint.DE); 
var result = wrapper.Lookup("B0037X9N5U");