【整理】C#版的AWS的ResponseGroup的Variations示例代码

【背景】

折腾:

【记录】继续优化C#版的AWS的ItemLookup接口

过程中,想要试试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示例代码

【整理】C#版的AWS的ResponseGroup的VariationSummary示例代码



One Thought on “【整理】C#版的AWS的ResponseGroup的Variations示例代码

发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量