【背景】
折腾:
之后,接着需要去实现,通过AWS的BrowseNodeLookup:
http://docs.aws.amazon.com/AWSECommerceService/latest/DG/BrowseNodeLookup.html
去实现,类似于网页中的,Amazon的那30多个主的大类的产品的查询。
【解决过程】
1.其中,相关的Browse Node IDs参考:
http://docs.aws.amazon.com/AWSECommerceService/latest/DG/BrowseNodeIDs.html
2.通过代码:
        private static void browseNodeLookupTest(SignedRequestHelper helper)
        {
            /*
             * Here is an ItemLookup example where the request is stored as a dictionary.
             */
            IDictionary<string, string> reqDict = new Dictionary<string, String>();
            reqDict["Service"] = "AWSECommerceService";
            reqDict["Version"] = awsApiVersion;
            reqDict["Operation"] = "BrowseNodeLookup";
            //http://docs.aws.amazon.com/AWSECommerceService/latest/DG/BrowseNodeIDs.html
            //2619525011 -> Appliances
            reqDict["BrowseNodeId"] = "2619525011";
            reqDict["ResponseGroup"] = "BrowseNodeInfo";
            /*
             * The helper supports two forms of requests - dictionary form and query string form.
             */
            String requestUrl;
            
            requestUrl = helper.Sign(reqDict);
            WebRequest request = HttpWebRequest.Create(requestUrl);
            WebResponse response = request.GetResponse();
            XmlDocument doc = new XmlDocument();
            doc.Load(response.GetResponseStream());
            //for debug
            System.Console.WriteLine(doc.InnerXml);
        }返回的xml是:
<BrowseNodeLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
    <OperationRequest>
        <RequestId>05520d7a-33ac-4913-96a9-6185a833892e</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="BrowseNodeLookup" />
            <Argument Name="Service" Value="AWSECommerceService" />
            <Argument Name="Signature" Value="SK3M+ywbdDp4nucUe5bdDZANf6UrY9z+4wUzIrGtQOY=" />
            <Argument Name="AssociateTag" Value="xxx" />
            <Argument Name="Version" Value="2011-08-02" />
            <Argument Name="BrowseNodeId" Value="2619525011" />
            <Argument Name="AWSAccessKeyId" Value="xxx" />
            <Argument Name="Timestamp" Value="2013-06-13T12:18:04Z" />
            <Argument Name="ResponseGroup" Value="BrowseNodeInfo" />
        </Arguments>
        <RequestProcessingTime>0.010225</RequestProcessingTime>
    </OperationRequest>
    <BrowseNodes>
        <Request>
            <IsValid>True</IsValid>
            <BrowseNodeLookupRequest>
                <BrowseNodeId>2619525011</BrowseNodeId>
                <ResponseGroup>BrowseNodeInfo</ResponseGroup>
            </BrowseNodeLookupRequest>
        </Request>
        <BrowseNode>
            <BrowseNodeId>2619525011</BrowseNodeId>
            <Name>Appliances</Name>
            <Children>
                <BrowseNode>
                    <BrowseNodeId>2619526011</BrowseNodeId>
                    <Name>Categories</Name>
                    <IsCategoryRoot>1</IsCategoryRoot>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2645269011</BrowseNodeId>
                    <Name>Featured Categories</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2645372011</BrowseNodeId>
                    <Name>Self Service</Name>
                </BrowseNode>
            </Children>
        </BrowseNode>
    </BrowseNodes>
</BrowseNodeLookupResponse>很明显,没有出现,访问:
http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dappliances&field-keywords=
中所出现的,那几十个子分类,从:
Air Conditioners 到 Wine Cellars。
3.再去试试,其中的那个IsCategoryRoot为1的2619526011:
        private static void browseNodeLookupTest(SignedRequestHelper helper)
        {
            /*
             * Here is an ItemLookup example where the request is stored as a dictionary.
             */
            IDictionary<string, string> reqDict = new Dictionary<string, String>();
            reqDict["Service"] = "AWSECommerceService";
            reqDict["Version"] = awsApiVersion;
            reqDict["Operation"] = "BrowseNodeLookup";
            //http://docs.aws.amazon.com/AWSECommerceService/latest/DG/BrowseNodeIDs.html
            //2619525011 -> Appliances
            //reqDict["BrowseNodeId"] = "2619525011";
            //<BrowseNodeId>2619525011</BrowseNodeId>
            //<Name>Appliances</Name>
            //<Children>
            //    <BrowseNode>
            //        <BrowseNodeId>2619526011</BrowseNodeId>
            //        <Name>Categories</Name>
            //        <IsCategoryRoot>1</IsCategoryRoot>
            //    </BrowseNode>
            reqDict["BrowseNodeId"] = "2619526011";
            reqDict["ResponseGroup"] = "BrowseNodeInfo";
            /*
             * The helper supports two forms of requests - dictionary form and query string form.
             */
            String requestUrl;
            
            requestUrl = helper.Sign(reqDict);
            WebRequest request = HttpWebRequest.Create(requestUrl);
            WebResponse response = request.GetResponse();
            XmlDocument doc = new XmlDocument();
            doc.Load(response.GetResponseStream());
            //for debug
            System.Console.WriteLine(doc.InnerXml);
        }返回xml是:
<BrowseNodeLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
    <OperationRequest>
        <RequestId>c1435dc8-a7a0-4167-92e9-80039bad49b6</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="BrowseNodeLookup" />
            <Argument Name="Service" Value="AWSECommerceService" />
            <Argument Name="Signature" Value="J1WgQm1G0D/eAEf6U8ZQBsdptHx+XFjPcMBmuA9bvrM=" />
            <Argument Name="AssociateTag" Value="xxx" />
            <Argument Name="Version" Value="2011-08-02" />
            <Argument Name="BrowseNodeId" Value="2619526011" />
            <Argument Name="AWSAccessKeyId" Value="xxx" />
            <Argument Name="Timestamp" Value="2013-06-13T12:39:29Z" />
            <Argument Name="ResponseGroup" Value="BrowseNodeInfo" />
        </Arguments>
        <RequestProcessingTime>0.002589</RequestProcessingTime>
    </OperationRequest>
    <BrowseNodes>
        <Request>
            <IsValid>True</IsValid>
            <BrowseNodeLookupRequest>
                <BrowseNodeId>2619526011</BrowseNodeId>
                <ResponseGroup>BrowseNodeInfo</ResponseGroup>
            </BrowseNodeLookupRequest>
        </Request>
        <BrowseNode>
            <BrowseNodeId>2619526011</BrowseNodeId>
            <Name>Categories</Name>
            <IsCategoryRoot>1</IsCategoryRoot>
            <Children>
                <BrowseNode>
                    <BrowseNodeId>3737671</BrowseNodeId>
                    <Name>Air Conditioners</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>267554011</BrowseNodeId>
                    <Name>Air Purifiers</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2632820011</BrowseNodeId>
                    <Name>Appliance Services</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2242350011</BrowseNodeId>
                    <Name>Appliance Warranties</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2686378011</BrowseNodeId>
                    <Name>Beer Keg Refrigerators</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2686328011</BrowseNodeId>
                    <Name>Beverage Refrigerators</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>495362</BrowseNodeId>
                    <Name>Ceiling Fans & Accessories</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>678542011</BrowseNodeId>
                    <Name>Compact Refrigerators</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741261</BrowseNodeId>
                    <Name>Cooktops</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>267557011</BrowseNodeId>
                    <Name>Dehumidifiers</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741271</BrowseNodeId>
                    <Name>Dishwashers</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3737601</BrowseNodeId>
                    <Name>Fans</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741331</BrowseNodeId>
                    <Name>Freezers</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>680343011</BrowseNodeId>
                    <Name>Garbage Disposals</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>267555011</BrowseNodeId>
                    <Name>Humidifiers</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2399939011</BrowseNodeId>
                    <Name>Ice Makers</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>510240</BrowseNodeId>
                    <Name>Irons, Steamers & Accessories</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>289935</BrowseNodeId>
                    <Name>Microwave Ovens</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741181</BrowseNodeId>
                    <Name>Parts & Accessories</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741441</BrowseNodeId>
                    <Name>Range Hoods</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741411</BrowseNodeId>
                    <Name>Ranges</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741361</BrowseNodeId>
                    <Name>Refrigerators</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>289913</BrowseNodeId>
                    <Name>Small Appliances</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>510182</BrowseNodeId>
                    <Name>Space Heaters</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741451</BrowseNodeId>
                    <Name>Trash Compactors</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>510106</BrowseNodeId>
                    <Name>Vacuums & Floor Care</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741481</BrowseNodeId>
                    <Name>Wall Ovens</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2399955011</BrowseNodeId>
                    <Name>Warming Drawers</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>2383576011</BrowseNodeId>
                    <Name>Washers & Dryers</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3741521</BrowseNodeId>
                    <Name>Wine Cellars</Name>
                </BrowseNode>
            </Children>
            <Ancestors>
                <BrowseNode>
                    <BrowseNodeId>2619525011</BrowseNodeId>
                    <Name>Appliances</Name>
                </BrowseNode>
            </Ancestors>
        </BrowseNode>
    </BrowseNodes>
</BrowseNodeLookupResponse>就是我们所需要的结果了:
所有的子分类的ID和名字,从ID为3737671的Air Conditioners,到ID为3741521的Wine Cellars
4.然后就接着再去试试,第一个子分类,ID为3737671的Air Conditioners,看看能否得到产品数据:
            //<Children>
            //    <BrowseNode>
            //        <BrowseNodeId>3737671</BrowseNodeId>
            //        <Name>Air Conditioners</Name>
            //    </BrowseNode>
            reqDict["BrowseNodeId"] = "3737671";
            reqDict["ResponseGroup"] = "BrowseNodeInfo";返回xml是:
<BrowseNodeLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
    <OperationRequest>
        <RequestId>54190300-c977-4b9b-8194-f91d6c2eef34</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="BrowseNodeLookup" />
            <Argument Name="Service" Value="AWSECommerceService" />
            <Argument Name="Signature" Value="m00R00zTRW7zr9gitSEJg15jYEWo2nSWtBbSo0s1soc=" />
            <Argument Name="AssociateTag" Value="xxx" />
            <Argument Name="Version" Value="2011-08-02" />
            <Argument Name="BrowseNodeId" Value="3737671" />
            <Argument Name="AWSAccessKeyId" Value="xxx" />
            <Argument Name="Timestamp" Value="2013-06-13T12:44:12Z" />
            <Argument Name="ResponseGroup" Value="BrowseNodeInfo" />
        </Arguments>
        <RequestProcessingTime>0.001778</RequestProcessingTime>
    </OperationRequest>
    <BrowseNodes>
        <Request>
            <IsValid>True</IsValid>
            <BrowseNodeLookupRequest>
                <BrowseNodeId>3737671</BrowseNodeId>
                <ResponseGroup>BrowseNodeInfo</ResponseGroup>
            </BrowseNodeLookupRequest>
        </Request>
        <BrowseNode>
            <BrowseNodeId>3737671</BrowseNodeId>
            <Name>Air Conditioners & Accessories</Name>
            <Children>
                <BrowseNode>
                    <BrowseNodeId>3737761</BrowseNodeId>
                    <Name>Energy Star Qualified</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3737741</BrowseNodeId>
                    <Name>Multiroom</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>1193678</BrowseNodeId>
                    <Name>Portable</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3737751</BrowseNodeId>
                    <Name>Single-Room</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3737701</BrowseNodeId>
                    <Name>Slider Casement</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3737711</BrowseNodeId>
                    <Name>Wall</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3737721</BrowseNodeId>
                    <Name>Window</Name>
                </BrowseNode>
                <BrowseNode>
                    <BrowseNodeId>3737681</BrowseNodeId>
                    <Name>Parts & Accessories</Name>
                </BrowseNode>
            </Children>
            <Ancestors>
                <BrowseNode>
                    <BrowseNodeId>3206324011</BrowseNodeId>
                    <Name>Heating, Cooling & Air Quality</Name>
                    <Ancestors>
                        <BrowseNode>
                            <BrowseNodeId>1063498</BrowseNodeId>
                            <Name>Categories</Name>
                            <IsCategoryRoot>1</IsCategoryRoot>
                            <Ancestors>
                                <BrowseNode>
                                    <BrowseNodeId>1055398</BrowseNodeId>
                                    <Name>Home & Kitchen</Name>
                                </BrowseNode>
                            </Ancestors>
                        </BrowseNode>
                    </Ancestors>
                </BrowseNode>
            </Ancestors>
        </BrowseNode>
    </BrowseNodes>
</BrowseNodeLookupResponse>即,和网页中:
显示出来的效果一样的,
显示其子分类:
从第一个,ID为3737761的Energy Star Qualified,到最后一个,ID为3737681的Parts & Accessories
5.所以接着再去试试,第一个,ID为3737761的Energy Star Qualified的分类:
            //<BrowseNode>
            //    <BrowseNodeId>3737671</BrowseNodeId>
            //    <Name>Air Conditioners & Accessories</Name>
            //    <Children>
            //        <BrowseNode>
            //            <BrowseNodeId>3737761</BrowseNodeId>
            //            <Name>Energy Star Qualified</Name>
            //        </BrowseNode>
            reqDict["BrowseNodeId"] = "3737761";返回xml是:
<BrowseNodeLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
    <OperationRequest>
        <RequestId>6cbae38c-a4d5-43cf-9d7d-59c5c73e86f4</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="BrowseNodeLookup" />
            <Argument Name="Service" Value="AWSECommerceService" />
            <Argument Name="Signature" Value="aKg6+9WC65aO1N02j4BVzelX2iht6LSk5/9NHWrZdfU=" />
            <Argument Name="AssociateTag" Value="xxx" />
            <Argument Name="Version" Value="2011-08-02" />
            <Argument Name="BrowseNodeId" Value="3737761" />
            <Argument Name="AWSAccessKeyId" Value="xxx" />
            <Argument Name="Timestamp" Value="2013-06-13T12:47:59Z" />
            <Argument Name="ResponseGroup" Value="BrowseNodeInfo" />
        </Arguments>
        <RequestProcessingTime>0.002083</RequestProcessingTime>
    </OperationRequest>
    <BrowseNodes>
        <Request>
            <IsValid>True</IsValid>
            <BrowseNodeLookupRequest>
                <BrowseNodeId>3737761</BrowseNodeId>
                <ResponseGroup>BrowseNodeInfo</ResponseGroup>
            </BrowseNodeLookupRequest>
        </Request>
        <BrowseNode>
            <BrowseNodeId>3737761</BrowseNodeId>
            <Name>Energy Star Qualified</Name>
            <Ancestors>
                <BrowseNode>
                    <BrowseNodeId>3737671</BrowseNodeId>
                    <Name>Air Conditioners & Accessories</Name>
                    <Ancestors>
                        <BrowseNode>
                            <BrowseNodeId>3206324011</BrowseNodeId>
                            <Name>Heating, Cooling & Air Quality</Name>
                            <Ancestors>
                                <BrowseNode>
                                    <BrowseNodeId>1063498</BrowseNodeId>
                                    <Name>Categories</Name>
                                    <IsCategoryRoot>1</IsCategoryRoot>
                                    <Ancestors>
                                        <BrowseNode>
                                            <BrowseNodeId>1055398</BrowseNodeId>
                                            <Name>Home & Kitchen</Name>
                                        </BrowseNode>
                                    </Ancestors>
                                </BrowseNode>
                            </Ancestors>
                        </BrowseNode>
                    </Ancestors>
                </BrowseNode>
            </Ancestors>
        </BrowseNode>
    </BrowseNodes>
</BrowseNodeLookupResponse>就只有最后一级的浏览节点了。
但是此处希望是,网页浏览:
一样,可以获得该最叶子分类下,所有的产品的数据。
6.所以就想办法,在如何获得了某个browserNode前提下,查找旗下所有的产品。
然后看了看:
的解释,觉得貌似是需要再去通过
去找该分类下面的产品。
7.然后用了下面代码:
        private static void itemSearchTest(SignedRequestHelper helper)
        {
            /*
             * Here is an ItemLookup example where the request is stored as a dictionary.
             */
            IDictionary<string, string> reqDict = new Dictionary<string, String>();
            reqDict["Service"] = "AWSECommerceService";
            reqDict["Version"] = awsApiVersion;
            reqDict["Operation"] = "ItemSearch";
            reqDict["SearchIndex"] = "None";
            reqDict["ResponseGroup"] = "ItemIds";
            //Home & Kitchen ->  Heating, Cooling & Air Quality -> Air Conditioners & Accessories ->  Energy Star Qualified
            reqDict["BrowseNodeId"] = "3737761";
            String requestUrl = helper.Sign(reqDict);
            WebRequest request = HttpWebRequest.Create(requestUrl);
            WebResponse response = request.GetResponse();
            XmlDocument doc = new XmlDocument();
            doc.Load(response.GetResponseStream());
            //for debug
            System.Console.WriteLine(doc.InnerXml);
        }结果出错了:
<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
    <OperationRequest>
        <RequestId>1e73a18a-cf53-4fdc-9891-6f7573e59aab</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="ItemSearch"/>
            <Argument Name="Service" Value="AWSECommerceService"/>
            <Argument Name="Signature" Value="dq2dDHLFmvxf/T1LfuvpNXJO32+4TsCoCdTIe3OhjeQ="/>
            <Argument Name="AssociateTag" Value="xxx"/>
            <Argument Name="Version" Value="2011-08-02"/>
            <Argument Name="BrowseNodeId" Value="3737761"/>
            <Argument Name="AWSAccessKeyId" Value="xxx"/>
            <Argument Name="Timestamp" Value="2013-06-13T13:03:43Z"/>
            <Argument Name="ResponseGroup" Value="ItemIds"/>
            <Argument Name="SearchIndex" Value="None"/>
        </Arguments>
        <RequestProcessingTime>0.0034130000000000</RequestProcessingTime>
    </OperationRequest>
    <Items>
        <Request>
            <IsValid>False</IsValid>
            <ItemSearchRequest>
                <ResponseGroup>ItemIds</ResponseGroup>
                <SearchIndex>None</SearchIndex>
            </ItemSearchRequest>
            <Errors>
                <Error>
                    <Code>AWS.InvalidEnumeratedParameter</Code>
                    <Message>The value you specified for SearchIndex is invalid. Valid values include [\n\t\t\t\t'All','Apparel','Appliances','ArtsAndCrafts','Automotive','Baby','Beauty','Blended','Books','Classical','Collectibles','DVD','DigitalMusic','Electronics','GiftCards','GourmetFood','Grocery','HealthPersonalCare','HomeGarden','Industrial','Jewelry','KindleStore','Kitchen','LawnAndGarden','Marketplace','MP3Downloads','Magazines',,'Miscellaneous','Music','MusicTracks','MusicalInstruments','MobileApps','OfficeProducts','OutdoorLiving','PCHardware','PetSupplies','Photo','Shoes','Software','SportingGoods','Tools','Toys','UnboxVideo','VHS','Video','VideoGames','Watches','Wireless','WirelessAccessories'\n\t\t\t\t].</Message>
                </Error>
                <Error>
                    <Code>AWS.MinimumParameterRequirement</Code>
                    <Message>Your request should have atleast 1 of the following parameters: 'Keywords','Title','Power','BrowseNode','Artist','Author','Actor','Director','AudienceRating','Manufacturer','MusicLabel','Composer','Publisher','Brand','Conductor','Orchestra','TextStream','Cuisine','City','Neighborhood'.</Message>
                </Error>
            </Errors>
        </Request>
    </Items>
</ItemSearchResponse>8.所以,再去添加对应的SearchIndex:
            //reqDict["SearchIndex"] = "None";
            reqDict["SearchIndex"] = "HomeGarden";
            reqDict["ResponseGroup"] = "ItemIds";
            //Home & Kitchen ->  Heating, Cooling & Air Quality -> Air Conditioners & Accessories ->  Energy Star Qualified
            reqDict["BrowseNodeId"] = "3737761";结果竟然还报错:
<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
    <OperationRequest>
        <RequestId>277f477a-0eab-4efe-8245-430913085f16</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="ItemSearch"/>
            <Argument Name="Service" Value="AWSECommerceService"/>
            <Argument Name="Signature" Value="IjY+aLZhigv0OJzJM5DyxY4E3NPtMHUuqUgLwKT8vIw="/>
            <Argument Name="AssociateTag" Value="xxx"/>
            <Argument Name="Version" Value="2011-08-02"/>
            <Argument Name="BrowseNodeId" Value="3737761"/>
            <Argument Name="AWSAccessKeyId" Value="xxx"/>
            <Argument Name="Timestamp" Value="2013-06-13T13:07:07Z"/>
            <Argument Name="ResponseGroup" Value="ItemIds"/>
            <Argument Name="SearchIndex" Value="HomeGarden"/>
        </Arguments>
        <RequestProcessingTime>0.0024860000000000</RequestProcessingTime>
    </OperationRequest>
    <Items>
        <Request>
            <IsValid>False</IsValid>
            <ItemSearchRequest>
                <ResponseGroup>ItemIds</ResponseGroup>
                <SearchIndex>HomeGarden</SearchIndex>
            </ItemSearchRequest>
            <Errors>
                <Error>
                    <Code>AWS.MinimumParameterRequirement</Code>
                    <Message>Your request should have atleast 1 of the following parameters: 'Keywords','Title','Power','BrowseNode','Artist','Author','Actor','Director','AudienceRating','Manufacturer','MusicLabel','Composer','Publisher','Brand','Conductor','Orchestra','TextStream','Cuisine','City','Neighborhood'.</Message>
                </Error>
            </Errors>
        </Request>
    </Items>
</ItemSearchResponse>9.然后才发现,原来自己用的是BrowseNodeId而不是人家要的BrowseNode
所以再改为:
            //reqDict["SearchIndex"] = "None";
            reqDict["SearchIndex"] = "HomeGarden";
            reqDict["ResponseGroup"] = "ItemIds";
            //Home & Kitchen ->  Heating, Cooling & Air Quality -> Air Conditioners & Accessories ->  Energy Star Qualified
            //reqDict["BrowseNodeId"] = "3737761";
            reqDict["BrowseNode"] = "3737761";终于可以得到所要的产品数据了:
<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
    <OperationRequest>
        <RequestId>d056191a-13d5-422a-a4fe-fc2b50d7c56d</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="ItemSearch"/>
            <Argument Name="Service" Value="AWSECommerceService"/>
            <Argument Name="Signature" Value="azUu3ODipJ9cIeYWwDIsTOeLN9Ozqidy0+kJbPpmwUI="/>
            <Argument Name="AssociateTag" Value="xxx"/>
            <Argument Name="BrowseNode" Value="3737761"/>
            <Argument Name="Version" Value="2011-08-02"/>
            <Argument Name="AWSAccessKeyId" Value="xxx"/>
            <Argument Name="Timestamp" Value="2013-06-13T13:10:06Z"/>
            <Argument Name="ResponseGroup" Value="ItemIds"/>
            <Argument Name="SearchIndex" Value="HomeGarden"/>
        </Arguments>
        <RequestProcessingTime>0.2485140000000000</RequestProcessingTime>
    </OperationRequest>
    <Items>
        <Request>
            <IsValid>True</IsValid>
            <ItemSearchRequest>
                <BrowseNode>3737761</BrowseNode>
                <ResponseGroup>ItemIds</ResponseGroup>
                <SearchIndex>HomeGarden</SearchIndex>
            </ItemSearchRequest>
        </Request>
        <TotalResults>51</TotalResults>
        <TotalPages>6</TotalPages>
        <MoreSearchResultsUrl>http://www.amazon.com/gp/redirect.html?camp=2025&creative=386001&location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fsearch%3Fnode%3D3737761%26url%3Dsearch-alias%253Dgarden&linkCode=xm2&tag=xxx&SubscriptionId=xxx</MoreSearchResultsUrl>
        <Item>
            <ASIN>B002QK9YZ4</ASIN>
        </Item>
        <Item>
            <ASIN>B00008WAMK</ASIN>
        </Item>
        <Item>
            <ASIN>B007XH7HS6</ASIN>
        </Item>
        <Item>
            <ASIN>B002SQHNH2</ASIN>
        </Item>
        <Item>
            <ASIN>B0050C71PA</ASIN>
        </Item>
        <Item>
            <ASIN>B007XFXBII</ASIN>
        </Item>
        <Item>
            <ASIN>B00BMZ8NO2</ASIN>
        </Item>
        <Item>
            <ASIN>B00C5VMJEC</ASIN>
        </Item>
        <Item>
            <ASIN>B002SQHVE2</ASIN>
        </Item>
        <Item>
            <ASIN>B007XGUGSU</ASIN>
        </Item>
    </Items>
</ItemSearchResponse>10.但是还是要想办法,把剩余的5页的内容,都得到才可以。
继续参考:
http://docs.aws.amazon.com/AWSECommerceService/latest/DG/ItemSearch.html
去添加
 Retrieves a specific page of items from all of the items in a response. Up to ten items are returned on a page unless  Valid Values: 1 to 10 (1 to 5 when the search index = "All") Type: String Default: None  | 
试试:
            //reqDict["SearchIndex"] = "None";
            reqDict["SearchIndex"] = "HomeGarden";
            reqDict["ResponseGroup"] = "ItemIds";
            //Home & Kitchen ->  Heating, Cooling & Air Quality -> Air Conditioners & Accessories ->  Energy Star Qualified
            //reqDict["BrowseNodeId"] = "3737761";
            reqDict["BrowseNode"] = "3737761";
            reqDict["ItemPage"] = "6";结果为:
<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01">
    <OperationRequest>
        <RequestId>3f7ae8d0-0bd8-4a65-9217-20e2b1916549</RequestId>
        <Arguments>
            <Argument Name="Operation" Value="ItemSearch"/>
            <Argument Name="Service" Value="AWSECommerceService"/>
            <Argument Name="Signature" Value="YdQU63MVS790IbwOm7qiilymkHNQu0qZthubgvx/JPw="/>
            <Argument Name="ItemPage" Value="6"/>
            <Argument Name="AssociateTag" Value="xxx"/>
            <Argument Name="BrowseNode" Value="3737761"/>
            <Argument Name="Version" Value="2011-08-02"/>
            <Argument Name="AWSAccessKeyId" Value="xxx"/>
            <Argument Name="Timestamp" Value="2013-06-13T13:23:22Z"/>
            <Argument Name="ResponseGroup" Value="ItemIds"/>
            <Argument Name="SearchIndex" Value="HomeGarden"/>
        </Arguments>
        <RequestProcessingTime>0.1727870000000000</RequestProcessingTime>
    </OperationRequest>
    <Items>
        <Request>
            <IsValid>True</IsValid>
            <ItemSearchRequest>
                <BrowseNode>3737761</BrowseNode>
                <ItemPage>6</ItemPage>
                <ResponseGroup>ItemIds</ResponseGroup>
                <SearchIndex>HomeGarden</SearchIndex>
            </ItemSearchRequest>
        </Request>
        <TotalResults>51</TotalResults>
        <TotalPages>6</TotalPages>
        <MoreSearchResultsUrl>http://www.amazon.com/gp/redirect.html?camp=2025&creative=386001&location=http%3A%2F%2Fwww.amazon.com%2Fgp%2Fsearch%3Fnode%3D3737761%26url%3Dsearch-alias%253Dgarden&linkCode=xm2&tag=xxx&SubscriptionId=xxx</MoreSearchResultsUrl>
        <Item>
            <ASIN>B00A03QHJA</ASIN>
        </Item>
    </Items>
</ItemSearchResponse>的确,是得到了所希望的数据:
之前显示共6页,共51个,每页10个,所以第6页,就只有1个。
如此,基本的功能:
查找浏览某个主分类,以及下面的子分类
以及子分类中,查找产品
就都基本跑通了。
【总结】
相对来说,还是不错的。
剩下就是写解析代码,实现对应的逻辑了。