【背景】
折腾:
过程中,想要试试ResponseGroup的Variations。
【折腾过程】
1.有了:
【整理】C#版的AWS的ResponseGroup的VariationSummary示例代码
的经验后,就可以直接去获取产品的Variation的parent的ASIN,然后直接去获得其中的所有的,全部的variations的信息了。
2. 完整代码如下:
(1)ItemLookupSample.cs
/**********************************************************************************************
* Copyright 2009 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
* except in compliance with the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0/
*
* or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS"
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under the License.
*
* ********************************************************************************************
*
* Amazon Product Advertising API
* Signed Requests Sample Code
*
* API Version: 2009-03-31
*
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;
using System.Xml;
using System.Xml.XPath;
namespace AmazonProductAdvtApi
{
class ItemLookupSample
{
private const string awsAccessKeyId = "xxx";
private const string awsSecretKey = "xxx";
private const string awsAssociateTag = "xxx";
private const string awsDestination = "ecs.amazonaws.com";
private const string awsApiVersion = "2011-08-02";
//private const string NAMESPACE = "http://webservices.amazon.com/AWSECommerceService/2009-03-31";
//private const string NAMESPACE = "http://webservices.amazon.com/AWSECommerceService/2011-08-01";
private const string NAMESPACE = "http://webservices.amazon.com/AWSECommerceService/" + awsApiVersion;
//private const string ITEM_ID = "0545010225";
//private const string ITEM_ID = "B0083PWAPW";
//<Item>
// <ASIN>B0083PWAPW</ASIN>
// <ParentASIN>B008GGCAVM</ParentASIN>
//</Item>
private const string ITEM_ID = "B008GGCAVM";
public static void Main()
{
SignedRequestHelper helper = new SignedRequestHelper(awsAccessKeyId, awsSecretKey, awsAssociateTag, awsDestination);
/*
* Here is an ItemLookup example where the request is stored as a dictionary.
*/
IDictionary<string, string> reqDict = new Dictionary<string, String>();
reqDict["Service"] = "AWSECommerceService";
//r1["Version"] = "2009-03-31";
//r1["Version"] = "2009-03-31";
reqDict["Version"] = "2011-08-02";
reqDict["Operation"] = "ItemLookup";
reqDict["IdType"] = "ASIN";
reqDict["ItemId"] = ITEM_ID;
//reqDict["ResponseGroup"] = "Small";
//reqDict["ResponseGroup"] = "OfferSummary";
//reqDict["ResponseGroup"] = "ItemAttributes";
//reqDict["ResponseGroup"] = "VariationSummary";
reqDict["ResponseGroup"] = "Variations";
/*
* The helper supports two forms of requests - dictionary form and query string form.
*/
String requestUrl;
String title;
requestUrl = helper.Sign(reqDict);
title = FetchTitle(requestUrl);
System.Console.WriteLine("Method 1: ItemLookup Dictionary form.");
System.Console.WriteLine("Title is \"" + title + "\"");
System.Console.WriteLine();
}
private static string FetchTitle(string url)
{
try
{
WebRequest request = HttpWebRequest.Create(url);
WebResponse response = request.GetResponse();
XmlDocument doc = new XmlDocument();
doc.Load(response.GetResponseStream());
//for debug
System.Console.WriteLine(doc.InnerXml);
XmlNodeList errorMessageNodes = doc.GetElementsByTagName("Message", NAMESPACE);
if (errorMessageNodes != null && errorMessageNodes.Count > 0)
{
String message = errorMessageNodes.Item(0).InnerText;
return "Error: " + message + " (but signature worked)";
}
XmlNode titleNode = doc.GetElementsByTagName("Title", NAMESPACE).Item(0);
string title = titleNode.InnerText;
response.Close();
return title;
}
catch (Exception e)
{
System.Console.WriteLine("Caught Exception: " + e.Message);
System.Console.WriteLine("Stack Trace: " + e.StackTrace);
}
finally
{
}
return null;
}
}
}
(2)SignedRequestHelper.cs
/**********************************************************************************************
* Copyright 2009 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file
* except in compliance with the License. A copy of the License is located at
*
* http://aws.amazon.com/apache2.0/
*
* or in the "LICENSE.txt" file accompanying this file. This file is distributed on an "AS IS"
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under the License.
*
* ********************************************************************************************
*
* Amazon Product Advertising API
* Signed Requests Sample Code
*
* API Version: 2009-03-31
*
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Security.Cryptography;
namespace AmazonProductAdvtApi
{
class SignedRequestHelper
{
private string endPoint;
private string akid;
//added by Crifan Li
//https://affiliate-program.amazon.co.uk/gp/advertising/api/detail/api-changes.html?ie=UTF8&pf_rd_t=501&ref_=amb_link_83388313_2&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_p=&pf_rd_s=assoc-center-1&pf_rd_r=&pf_rd_i=assoc-api-detail-2-v2
//Product Advertising API Change Details
//Associate Tag Parameter: Every request made to the API should include a valid Associate Tag. Any request that does not contain a valid Associate Tag will be rejected with an appropriate error message. For details on the Associate Tag parameter, please refer to our Developer guide.
//-> must add this Associate Tag, otherwise will return:
//<Error>
// <Code>AWS.MissingParameters</Code>
// <Message>Your request is missing required parameters. Required parameters include AssociateTag.</Message>
//</Error>
private string associateTag;
private byte[] secret;
private HMAC signer;
private const string REQUEST_URI = "/onca/xml";
private const string REQUEST_METHOD = "GET";
/*
* Use this constructor to create the object. The AWS credentials are available on
* http://aws.amazon.com
*
* The destination is the service end-point for your application:
* US: ecs.amazonaws.com
* JP: ecs.amazonaws.jp
* UK: ecs.amazonaws.co.uk
* DE: ecs.amazonaws.de
* FR: ecs.amazonaws.fr
* CA: ecs.amazonaws.ca
*/
public SignedRequestHelper(string awsAccessKeyId, string awsSecretKey, string awsAssociateTag, string destination)
{
this.endPoint = destination.ToLower();
this.akid = awsAccessKeyId;
//added by Crifan Li
this.associateTag = awsAssociateTag;
this.secret = Encoding.UTF8.GetBytes(awsSecretKey);
this.signer = new HMACSHA256(this.secret);
}
/*
* Sign a request in the form of a Dictionary of name-value pairs.
*
* This method returns a complete URL to use. Modifying the returned URL
* in any way invalidates the signature and Amazon will reject the requests.
*/
public string Sign(IDictionary<string, string> request)
{
// Use a SortedDictionary to get the parameters in naturual byte order, as
// required by AWS.
ParamComparer pc = new ParamComparer();
SortedDictionary<string, string> sortedMap = new SortedDictionary<string, string>(request, pc);
// Add the AWSAccessKeyId and Timestamp to the requests.
sortedMap["AWSAccessKeyId"] = this.akid;
//added by Crifan Li
sortedMap["AssociateTag"] = this.associateTag;
sortedMap["Timestamp"] = this.GetTimestamp();
// Get the canonical query string
string canonicalQS = this.ConstructCanonicalQueryString(sortedMap);
// Derive the bytes needs to be signed.
StringBuilder builder = new StringBuilder();
builder.Append(REQUEST_METHOD)
.Append("\n")
.Append(this.endPoint)
.Append("\n")
.Append(REQUEST_URI)
.Append("\n")
.Append(canonicalQS);
string stringToSign = builder.ToString();
byte[] toSign = Encoding.UTF8.GetBytes(stringToSign);
// Compute the signature and convert to Base64.
byte[] sigBytes = signer.ComputeHash(toSign);
string signature = Convert.ToBase64String(sigBytes);
// now construct the complete URL and return to caller.
StringBuilder qsBuilder = new StringBuilder();
qsBuilder.Append("http://")
.Append(this.endPoint)
.Append(REQUEST_URI)
.Append("?")
.Append(canonicalQS)
.Append("&Signature=")
.Append(this.PercentEncodeRfc3986(signature));
return qsBuilder.ToString();
}
/*
* Sign a request in the form of a query string.
*
* This method returns a complete URL to use. Modifying the returned URL
* in any way invalidates the signature and Amazon will reject the requests.
*/
public string Sign(string queryString)
{
IDictionary<string, string> request = this.CreateDictionary(queryString);
return this.Sign(request);
}
/*
* Current time in IS0 8601 format as required by Amazon
*/
private string GetTimestamp()
{
DateTime currentTime = DateTime.UtcNow;
string timestamp = currentTime.ToString("yyyy-MM-ddTHH:mm:ssZ");
return timestamp;
}
/*
* Percent-encode (URL Encode) according to RFC 3986 as required by Amazon.
*
* This is necessary because .NET's HttpUtility.UrlEncode does not encode
* according to the above standard. Also, .NET returns lower-case encoding
* by default and Amazon requires upper-case encoding.
*/
private string PercentEncodeRfc3986(string str)
{
str = HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8);
str = str.Replace("'", "%27").Replace("(", "%28").Replace(")", "%29").Replace("*", "%2A").Replace("!", "%21").Replace("%7e", "~").Replace("+", "%20");
StringBuilder sbuilder = new StringBuilder(str);
for (int i = 0; i < sbuilder.Length; i++)
{
if (sbuilder[i] == '%')
{
if (Char.IsLetter(sbuilder[i + 1]) || Char.IsLetter(sbuilder[i + 2]))
{
sbuilder[i + 1] = Char.ToUpper(sbuilder[i + 1]);
sbuilder[i + 2] = Char.ToUpper(sbuilder[i + 2]);
}
}
}
return sbuilder.ToString();
}
/*
* Convert a query string to corresponding dictionary of name-value pairs.
*/
private IDictionary<string, string> CreateDictionary(string queryString)
{
Dictionary<string, string> map = new Dictionary<string, string>();
string[] requestParams = queryString.Split('&');
for (int i = 0; i < requestParams.Length; i++)
{
if (requestParams[i].Length < 1)
{
continue;
}
char[] sep = { '=' };
string[] param = requestParams[i].Split(sep, 2);
for (int j = 0; j < param.Length; j++)
{
param[j] = HttpUtility.UrlDecode(param[j], System.Text.Encoding.UTF8);
}
switch (param.Length)
{
case 1:
{
if (requestParams[i].Length >= 1)
{
if (requestParams[i].ToCharArray()[0] == '=')
{
map[""] = param[0];
}
else
{
map[param[0]] = "";
}
}
break;
}
case 2:
{
if (!string.IsNullOrEmpty(param[0]))
{
map[param[0]] = param[1];
}
}
break;
}
}
return map;
}
/*
* Consttuct the canonical query string from the sorted parameter map.
*/
private string ConstructCanonicalQueryString(SortedDictionary<string, string> sortedParamMap)
{
StringBuilder builder = new StringBuilder();
if (sortedParamMap.Count == 0)
{
builder.Append("");
return builder.ToString();
}
foreach (KeyValuePair<string, string> kvp in sortedParamMap)
{
builder.Append(this.PercentEncodeRfc3986(kvp.Key));
builder.Append("=");
builder.Append(this.PercentEncodeRfc3986(kvp.Value));
builder.Append("&");
}
string canonicalString = builder.ToString();
canonicalString = canonicalString.Substring(0, canonicalString.Length - 1);
return canonicalString;
}
}
/*
* To help the SortedDictionary order the name-value pairs in the correct way.
*/
class ParamComparer : IComparer<string>
{
public int Compare(string p1, string p2)
{
return string.CompareOrdinal(p1, p2);
}
}
}
(3)返回的xml为:
<?xml version="1.0"?>
<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
<OperationRequest>
<RequestId>2d95a9ad-5496-407a-a790-8d59b9ae7612</RequestId>
<Arguments>
<Argument Name="Operation" Value="ItemLookup"/>
<Argument Name="Service" Value="AWSECommerceService"/>
<Argument Name="Signature" Value="qW/wz3d32Rc4yUEpn0Vp1LpAGfyyw7aHJYf+5PP7b5I="/>
<Argument Name="AssociateTag" Value="xxx"/>
<Argument Name="Version" Value="2011-08-02"/>
<Argument Name="ItemId" Value="B008GGCAVM"/>
<Argument Name="IdType" Value="ASIN"/>
<Argument Name="AWSAccessKeyId" Value="xxx"/>
<Argument Name="Timestamp" Value="2013-06-13T09:43:49Z"/>
<Argument Name="ResponseGroup" Value="Variations"/>
</Arguments>
<RequestProcessingTime>0.0927190000000000</RequestProcessingTime>
</OperationRequest>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemLookupRequest>
<IdType>ASIN</IdType>
<ItemId>B008GGCAVM</ItemId>
<ResponseGroup>Variations</ResponseGroup>
<VariationPage>All</VariationPage>
</ItemLookupRequest>
</Request>
<Item>
<ASIN>B008GGCAVM</ASIN>
<ParentASIN>B008GGCAVM</ParentASIN>
<VariationSummary>
<LowestPrice>
<Amount>19900</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$199.00</FormattedPrice>
</LowestPrice>
<HighestPrice>
<Amount>24400</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$244.00</FormattedPrice>
</HighestPrice>
</VariationSummary>
<Variations>
<TotalVariations>4</TotalVariations>
<TotalVariationPages>1</TotalVariationPages>
<VariationDimensions>
<VariationDimension>DigitalStorageCapacity</VariationDimension>
<VariationDimension>Configuration</VariationDimension>
</VariationDimensions>
<Item>
<ASIN>B0083PWAPW</ASIN>
<ParentASIN>B008GGCAVM</ParentASIN>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL160_.jpg</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL.jpg</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">500</Width>
</LargeImage>
<ImageSets>
<ImageSet Category="primary">
<SwatchImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL30_.jpg</URL>
<Height Units="pixels">30</Height>
<Width Units="pixels">30</Width>
</SwatchImage>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<ThumbnailImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</ThumbnailImage>
<TinyImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL110_.jpg</URL>
<Height Units="pixels">110</Height>
<Width Units="pixels">110</Width>
</TinyImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL160_.jpg</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL.jpg</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">500</Width>
</LargeImage>
</ImageSet>
</ImageSets>
<ItemAttributes>
<Binding>Electronics</Binding>
<Brand>Amazon Digital Services Inc.</Brand>
<CatalogNumberList>
<CatalogNumberListElement>53-000406</CatalogNumberListElement>
</CatalogNumberList>
<Color>Black</Color>
<EAN>2609000009136</EAN>
<EANList>
<EANListElement>2609000009136</EANListElement>
<EANListElement>2609000005336</EANListElement>
<EANListElement>2609000005497</EANListElement>
<EANListElement>2609000006364</EANListElement>
<EANListElement>2609000005244</EANListElement>
<EANListElement>2609000009471</EANListElement>
<EANListElement>2609000006326</EANListElement>
<EANListElement>2412437002003</EANListElement>
<EANListElement>0848719003796</EANListElement>
<EANListElement>2097270920006</EANListElement>
<EANListElement>2720320491521</EANListElement>
<EANListElement>2486103219309</EANListElement>
<EANListElement>2609000009327</EANListElement>
<EANListElement>2609000006388</EANListElement>
</EANList>
<Feature>Stunning 1280x800 HD display with rich color and deep contrast from any viewing angle</Feature>
<Feature>Exclusive Dolby audio and dual driver stereo speakers for crisp, booming sound without distortion</Feature>
<Feature>Ultra-fast Wi-Fi- dual-antenna, dual-band Wi-Fi for 35% faster downloads and streaming</Feature>
<Feature>Over 22 million movies, TV shows, songs, magazines, books, audiobooks, and popular apps and games</Feature>
<ItemDimensions>
<Height Units="hundredths-inches">40</Height>
<Length Units="hundredths-inches">760</Length>
<Weight Units="hundredths-pounds">87</Weight>
<Width Units="hundredths-inches">540</Width>
</ItemDimensions>
<Label>Amazon Digital Services, Inc</Label>
<ListPrice>
<Amount>19900</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$199.00</FormattedPrice>
</ListPrice>
<Manufacturer>Amazon Digital Services, Inc</Manufacturer>
<Model>53-000406</Model>
<MPN>06550-611</MPN>
<PackageDimensions>
<Height Units="hundredths-inches">140</Height>
<Length Units="hundredths-inches">1020</Length>
<Weight Units="hundredths-pounds">130</Weight>
<Width Units="hundredths-inches">730</Width>
</PackageDimensions>
<PackageQuantity>1</PackageQuantity>
<PartNumber>06550-611</PartNumber>
<ProductGroup>Amazon Devices</ProductGroup>
<ProductTypeName>ABIS_ELECTRONICS</ProductTypeName>
<Publisher>Amazon Digital Services, Inc</Publisher>
<ReleaseDate>2012-09-14</ReleaseDate>
<Studio>Amazon Digital Services, Inc</Studio>
<Title>Kindle Fire HD 7", Dolby Audio, Dual-Band Wi-Fi, 16 GB - Includes Special Offers</Title>
<UPC>848719003796</UPC>
<UPCList>
<UPCListElement>848719003796</UPCListElement>
</UPCList>
</ItemAttributes>
<VariationAttributes>
<VariationAttribute>
<Name>DigitalStorageCapacity</Name>
<Value>16 GB</Value>
</VariationAttribute>
<VariationAttribute>
<Name>Configuration</Name>
<Value>With Special Offers</Value>
</VariationAttribute>
</VariationAttributes>
<Offers>
<Offer>
<Merchant>
<Name>Amazon.com</Name>
</Merchant>
<OfferAttributes>
<Condition>New</Condition>
</OfferAttributes>
<OfferListing>
<OfferListingId>ruHlLKYCVgCq%2Fy1vVUT3SyG%2B8XOmorXxvwjWh6c1jWD%2BjvcNUrK4FD80VFL0tvIvcgMcHIOHuqqT4%2FZ1YV3nenuwTufJ80wzkeLoGJbiqOCbKDYDyQPZ7A%3D%3D</OfferListingId>
<Price>
<Amount>19900</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$199.00</FormattedPrice>
</Price>
<Availability>Usually ships in 24 hours</Availability>
<AvailabilityAttributes>
<AvailabilityType>now</AvailabilityType>
<MinimumHours>0</MinimumHours>
<MaximumHours>0</MaximumHours>
</AvailabilityAttributes>
<IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
</OfferListing>
</Offer>
</Offers>
</Item>
<Item>
<ASIN>B007T36PSM</ASIN>
<ParentASIN>B008GGCAVM</ParentASIN>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL160_.jpg</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL.jpg</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">500</Width>
</LargeImage>
<ImageSets>
<ImageSet Category="primary">
<SwatchImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL30_.jpg</URL>
<Height Units="pixels">30</Height>
<Width Units="pixels">30</Width>
</SwatchImage>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<ThumbnailImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</ThumbnailImage>
<TinyImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL110_.jpg</URL>
<Height Units="pixels">110</Height>
<Width Units="pixels">110</Width>
</TinyImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL160_.jpg</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL.jpg</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">500</Width>
</LargeImage>
</ImageSet>
</ImageSets>
<ItemAttributes>
<Binding>Electronics</Binding>
<Brand>Amazon Digital Services Inc.</Brand>
<CatalogNumberList>
<CatalogNumberListElement>53-000243</CatalogNumberListElement>
</CatalogNumberList>
<Color>Black</Color>
<EAN>0814916018321</EAN>
<EANList>
<EANListElement>0814916018321</EANListElement>
</EANList>
<Feature>Stunning 1280x800 HD display with rich color and deep contrast from any viewing angle</Feature>
<Feature>Exclusive Dolby audio and dual driver stereo speakers for crisp, booming sound without distortion</Feature>
<Feature>Ultra-fast Wi-Fi- dual-antenna, dual-band Wi-Fi for 35% faster downloads and streaming</Feature>
<Feature>Over 22 million movies, TV shows, songs, magazines, books, audiobooks, and popular apps and games</Feature>
<HazardousMaterialType>Unknown</HazardousMaterialType>
<ItemDimensions>
<Height Units="hundredths-inches">40</Height>
<Length Units="hundredths-inches">760</Length>
<Weight Units="hundredths-pounds">87</Weight>
<Width Units="hundredths-inches">540</Width>
</ItemDimensions>
<Label>Amazon Digital Services, Inc</Label>
<ListPrice>
<Amount>21400</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$214.00</FormattedPrice>
</ListPrice>
<Manufacturer>Amazon Digital Services, Inc</Manufacturer>
<Model>53-000243</Model>
<MPN>CFU7516</MPN>
<PackageDimensions>
<Height Units="hundredths-inches">140</Height>
<Length Units="hundredths-inches">1030</Length>
<Weight Units="hundredths-pounds">135</Weight>
<Width Units="hundredths-inches">730</Width>
</PackageDimensions>
<PackageQuantity>1</PackageQuantity>
<PartNumber>CFU7516</PartNumber>
<ProductGroup>Amazon Devices</ProductGroup>
<ProductTypeName>ABIS_ELECTRONICS</ProductTypeName>
<Publisher>Amazon Digital Services, Inc</Publisher>
<Studio>Amazon Digital Services, Inc</Studio>
<Title>Kindle Fire HD 7", Dolby Audio, Dual-Band Wi-Fi, 16 GB</Title>
<UPC>814916018321</UPC>
<UPCList>
<UPCListElement>814916018321</UPCListElement>
</UPCList>
</ItemAttributes>
<VariationAttributes>
<VariationAttribute>
<Name>DigitalStorageCapacity</Name>
<Value>16 GB</Value>
</VariationAttribute>
<VariationAttribute>
<Name>Configuration</Name>
<Value>Without Special Offers</Value>
</VariationAttribute>
</VariationAttributes>
<Offers>
<Offer>
<Merchant>
<Name>Amazon.com</Name>
</Merchant>
<OfferAttributes>
<Condition>New</Condition>
</OfferAttributes>
<OfferListing>
<OfferListingId>dwLyPtT%2FSc1dJkfM9tPED82NtylpjyZto4nN2Mf8NNGYKPeUy6T1MP%2BM8HiySGRPBIPUwGIxJGO3yYYMMntN1q%2BpwNoXDyHA7Usy9CLBo4Y%2FDCQNpaqIMA%3D%3D</OfferListingId>
<Price>
<Amount>21400</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$214.00</FormattedPrice>
</Price>
<Availability>Usually ships in 24 hours</Availability>
<AvailabilityAttributes>
<AvailabilityType>now</AvailabilityType>
<MinimumHours>0</MinimumHours>
<MaximumHours>0</MaximumHours>
</AvailabilityAttributes>
<IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
</OfferListing>
</Offer>
</Offers>
</Item>
<Item>
<ASIN>B008SYWFNA</ASIN>
<ParentASIN>B008GGCAVM</ParentASIN>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL160_.jpg</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL.jpg</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">500</Width>
</LargeImage>
<ImageSets>
<ImageSet Category="primary">
<SwatchImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL30_.jpg</URL>
<Height Units="pixels">30</Height>
<Width Units="pixels">30</Width>
</SwatchImage>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<ThumbnailImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</ThumbnailImage>
<TinyImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL110_.jpg</URL>
<Height Units="pixels">110</Height>
<Width Units="pixels">110</Width>
</TinyImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL160_.jpg</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL.jpg</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">500</Width>
</LargeImage>
</ImageSet>
</ImageSets>
<ItemAttributes>
<Binding>Electronics</Binding>
<Brand>Amazon Digital Services Inc.</Brand>
<CatalogNumberList>
<CatalogNumberListElement>53-000540</CatalogNumberListElement>
</CatalogNumberList>
<EAN>0848719007367</EAN>
<EANList>
<EANListElement>0848719007367</EANListElement>
</EANList>
<Feature>Stunning 1280x800 HD display with rich color and deep contrast from any viewing angle</Feature>
<Feature>Exclusive Dolby audio and dual driver stereo speakers for crisp, booming sound without distortion</Feature>
<Feature>Ultra-fast Wi-Fi- dual-antenna, dual-band Wi-Fi for 35% faster downloads and streaming</Feature>
<Feature>Over 22 million movies, TV shows, songs, magazines, books, audiobooks, and popular apps and games</Feature>
<ItemDimensions>
<Height Units="hundredths-inches">40</Height>
<Length Units="hundredths-inches">760</Length>
<Weight Units="hundredths-pounds">87</Weight>
<Width Units="hundredths-inches">540</Width>
</ItemDimensions>
<Label>Amazon Digital Services, Inc</Label>
<ListPrice>
<Amount>24900</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$249.00</FormattedPrice>
</ListPrice>
<Manufacturer>Amazon Digital Services, Inc</Manufacturer>
<Model>53-000540</Model>
<PackageDimensions>
<Height Units="hundredths-inches">140</Height>
<Length Units="hundredths-inches">1050</Length>
<Weight Units="hundredths-pounds">130</Weight>
<Width Units="hundredths-inches">740</Width>
</PackageDimensions>
<PackageQuantity>1</PackageQuantity>
<ProductGroup>Amazon Devices</ProductGroup>
<ProductTypeName>ABIS_ELECTRONICS</ProductTypeName>
<Publisher>Amazon Digital Services, Inc</Publisher>
<ReleaseDate>2012-10-25</ReleaseDate>
<Studio>Amazon Digital Services, Inc</Studio>
<Title>Kindle Fire HD 7", Dolby Audio, Dual-Band Wi-Fi, 32 GB - Includes Special Offers</Title>
<UPC>848719007367</UPC>
<UPCList>
<UPCListElement>848719007367</UPCListElement>
</UPCList>
</ItemAttributes>
<VariationAttributes>
<VariationAttribute>
<Name>DigitalStorageCapacity</Name>
<Value>32 GB</Value>
</VariationAttribute>
<VariationAttribute>
<Name>Configuration</Name>
<Value>With Special Offers</Value>
</VariationAttribute>
</VariationAttributes>
<Offers>
<Offer>
<Merchant>
<Name>Amazon.com</Name>
</Merchant>
<OfferAttributes>
<Condition>New</Condition>
</OfferAttributes>
<OfferListing>
<OfferListingId>KqXiAzJNq45RORJMfymA%2F2XMjiIFi4aexRNhoCPM2uJ8n1tZilHPoZeVAe57Fy1f5XmF7l3DRWcC3NOs71xT5V0mXg7xU3GA9%2FsNEkycETCdSkDgdlXqpw%3D%3D</OfferListingId>
<Price>
<Amount>22900</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$229.00</FormattedPrice>
</Price>
<AmountSaved>
<Amount>2000</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$20.00</FormattedPrice>
</AmountSaved>
<PercentageSaved>8</PercentageSaved>
<Availability>Usually ships in 24 hours</Availability>
<AvailabilityAttributes>
<AvailabilityType>now</AvailabilityType>
<MinimumHours>0</MinimumHours>
<MaximumHours>0</MaximumHours>
</AvailabilityAttributes>
<IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
</OfferListing>
</Offer>
</Offers>
</Item>
<Item>
<ASIN>B009D7BJR4</ASIN>
<ParentASIN>B008GGCAVM</ParentASIN>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL160_.jpg</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL.jpg</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">500</Width>
</LargeImage>
<ImageSets>
<ImageSet Category="primary">
<SwatchImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL30_.jpg</URL>
<Height Units="pixels">30</Height>
<Width Units="pixels">30</Width>
</SwatchImage>
<SmallImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<ThumbnailImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL75_.jpg</URL>
<Height Units="pixels">75</Height>
<Width Units="pixels">75</Width>
</ThumbnailImage>
<TinyImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL110_.jpg</URL>
<Height Units="pixels">110</Height>
<Width Units="pixels">110</Width>
</TinyImage>
<MediumImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL._SL160_.jpg</URL>
<Height Units="pixels">160</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>http://ecx.images-amazon.com/images/I/51EN7cswSYL.jpg</URL>
<Height Units="pixels">500</Height>
<Width Units="pixels">500</Width>
</LargeImage>
</ImageSet>
</ImageSets>
<ItemAttributes>
<Binding>Electronics</Binding>
<Brand>Amazon Digital Services Inc.</Brand>
<CatalogNumberList>
<CatalogNumberListElement>53-000541</CatalogNumberListElement>
</CatalogNumberList>
<EAN>0848719007374</EAN>
<EANList>
<EANListElement>0848719007374</EANListElement>
</EANList>
<Feature>Stunning 1280x800 HD display with rich color and deep contrast from any viewing angle</Feature>
<Feature>Exclusive Dolby audio and dual driver stereo speakers for crisp, booming sound without distortion</Feature>
<Feature>Ultra-fast Wi-Fi- dual-antenna, dual-band Wi-Fi for 35% faster downloads and streaming</Feature>
<Feature>Over 22 million movies, TV shows, songs, magazines, books, audiobooks, and popular apps and games</Feature>
<ItemDimensions>
<Height Units="hundredths-inches">40</Height>
<Length Units="hundredths-inches">760</Length>
<Weight Units="hundredths-pounds">87</Weight>
<Width Units="hundredths-inches">540</Width>
</ItemDimensions>
<Label>Amazon Digital Services, Inc</Label>
<ListPrice>
<Amount>26400</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$264.00</FormattedPrice>
</ListPrice>
<Manufacturer>Amazon Digital Services, Inc</Manufacturer>
<Model>53-000541</Model>
<PackageDimensions>
<Height Units="hundredths-inches">140</Height>
<Length Units="hundredths-inches">1020</Length>
<Weight Units="hundredths-pounds">115</Weight>
<Width Units="hundredths-inches">740</Width>
</PackageDimensions>
<PackageQuantity>1</PackageQuantity>
<ProductGroup>Amazon Devices</ProductGroup>
<ProductTypeName>ABIS_ELECTRONICS</ProductTypeName>
<Publisher>Amazon Digital Services, Inc</Publisher>
<ReleaseDate>2012-10-25</ReleaseDate>
<Studio>Amazon Digital Services, Inc</Studio>
<Title>Kindle Fire HD 7", Dolby Audio, Dual-Band Wi-Fi, 32 GB</Title>
<UPC>848719007374</UPC>
<UPCList>
<UPCListElement>848719007374</UPCListElement>
</UPCList>
</ItemAttributes>
<VariationAttributes>
<VariationAttribute>
<Name>DigitalStorageCapacity</Name>
<Value>32 GB</Value>
</VariationAttribute>
<VariationAttribute>
<Name>Configuration</Name>
<Value>Without Special Offers</Value>
</VariationAttribute>
</VariationAttributes>
<Offers>
<Offer>
<Merchant>
<Name>Amazon.com</Name>
</Merchant>
<OfferAttributes>
<Condition>New</Condition>
</OfferAttributes>
<OfferListing>
<OfferListingId>kj9vpb0SZNcO1ZzgNK4qFMkBVa81tjp2vNc%2B0uCglfpU9IDcM25ZVlkPBbJ4UWlTGeVKHV%2BqdDsueLrruY4l%2BjoMXAhB09BKowFsdsJgPw3qrdBrEYreOQ%3D%3D</OfferListingId>
<Price>
<Amount>24400</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$244.00</FormattedPrice>
</Price>
<AmountSaved>
<Amount>2000</Amount>
<CurrencyCode>USD</CurrencyCode>
<FormattedPrice>$20.00</FormattedPrice>
</AmountSaved>
<PercentageSaved>8</PercentageSaved>
<Availability>Usually ships in 24 hours</Availability>
<AvailabilityAttributes>
<AvailabilityType>now</AvailabilityType>
<MinimumHours>0</MinimumHours>
<MaximumHours>0</MaximumHours>
</AvailabilityAttributes>
<IsEligibleForSuperSaverShipping>1</IsEligibleForSuperSaverShipping>
</OfferListing>
</Offer>
</Offers>
</Item>
</Variations>
</Item>
</Items>
</ItemLookupResponse>
很明显,其中的Variations下面:
通过TotalVariations知道有4个variation;
对应的4个Item,每个都有:
ASIN
SmallImage/MediumImage/LargeImage
等等详细的信息。
【总结】
给定某个产品ASIN:
如果是child的ASIN:则需要先去获得对应的ParentASIN;
如果本身是parent的ASIN,则可以直接其获得:所有的variation的详细的信息;
更多信息可参考:
http://docs.aws.amazon.com/AWSECommerceService/latest/DG/RG_Variations.html
相关参考:
【整理】C#版的AWS的ResponseGroup的Small示例代码
【整理】C#版的AWS的ResponseGroup的OfferSummary示例代码
【整理】C#版的AWS的ResponseGroup的ItemAttributes示例代码