【背景】
折腾:
过程中,想要试试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示例代码