【问题标题】:asp.net amazon itemsearchasp.net 亚马逊项目搜索
【发布时间】:2011-03-17 14:26:41
【问题描述】:

我正在使用 Visual Studio 2008 并尝试像书籍或其他东西一样进行 API 项目搜索。 我只使用 accessKeyId,但是当我单击“搜索”按钮搜索书籍时,出现签名错误。 我还需要使用 secretKeyID 吗? 我刚刚在 Visual Studio 中创建了新的 ASP.Net 网站或者我必须使用 AWS SDK for.Net 包?

谁能给个好的建议。 谢谢!

【问题讨论】:

    标签: asp.net amazon


    【解决方案1】:

    签名错误意味着您没有正确创建请求签名。您应该使用适用于 .NET 的 SprightlySoft AWS 组件。它是免费的,并且支持产品广告 API。获取它在http://sprightlysoft.com/。适用于 .NET 的 AWS 开发工具包不适用于产品广告 API。

    这是一个使用 SprightlySoft 组件调用 ItemSearch 的示例。

    //Product Advertising API, ItemSearch: http://docs.amazonwebservices.com/AWSECommerceService/2010-10-01/DG/ItemSearch.html
    
    SprightlySoftAWS.REST MyREST = new SprightlySoftAWS.REST();
    
    String RequestURL;
    RequestURL = "https://ecs.amazonaws.com/onca/xml?Service=AWSECommerceService&Operation=ItemSearch&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 += "&Actor=" + System.Uri.EscapeDataString("Tom Cruise");
    RequestURL += "&SearchIndex=DVD";
    RequestURL += "&ResponseGroup=" + System.Uri.EscapeDataString("ItemAttributes,Reviews");
    RequestURL += "&Sort=salesrank";
    RequestURL += "&ItemPage=1";
    
    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);
    
    String ResponseMessage = "";
    
    if (RetBool == true)
    {
        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:ItemSearchResponse/amz:Items/amz:Item", MyXmlNamespaceManager);
    
        if (MyXmlNodeList.Count == 0)
        {
            ResponseMessage = "No items exist.";
        }
        else
        {
            foreach (System.Xml.XmlNode ItemXmlNode in MyXmlNodeList)
            {
                MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ItemAttributes/amz:Title", MyXmlNamespaceManager);
                ResponseMessage += "Title = " + MyXmlNode.InnerText;
    
                MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ItemAttributes/amz:ListPrice/amz:FormattedPrice", MyXmlNamespaceManager);
                ResponseMessage += "   ListPrice = " + MyXmlNode.InnerText;
    
                ResponseMessage += Environment.NewLine;
            }
        }
    
        MessageBox.Show(ResponseMessage); 
    }
    else
    {
        MessageBox.Show(MyREST.ResponseStringFormatted);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 2013-01-06
      • 2011-05-19
      • 2011-12-29
      • 2013-01-01
      • 2017-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多