4

我的工作环境是 Visual Studio 2008 + C#

我正在开发 Amazon WebService,我想使用 SOAP 从 Amazon 获取数据,但是当我尝试传递 IDType = UPC 时,它会给出以下错误消息,那么我该怎么做呢?

错误:

036725229884 不是 ItemId 的有效值。请更改此值,然后重试您的请求

我的代码:

ItemLookupRequest request1 = new ItemLookupRequest();
request1.IdType = ItemLookupRequestIdType.UPC;
request1.IdTypeSpecified = true;
request1.ItemId = new string[] { ProductID };
request1.ResponseGroup = new string[] { "Request", "Large", "OfferFull", "BrowseNodes" };
request1.MerchantId = "All";
request1.Condition = Condition.All;
request1.SearchIndex = "Books";

注意: 如何添加多个 SearchIndex,例如 ("Books","Photo","Video")?

我使用了以下 WebService: http ://webservices.amazon.com/AWSECommerceService/2009-11-01/US/AWSECommerceService.wsdl

4

2 回答 2

2

还要注意 UPC 和 EAN 之间的区别。

UPC = 12 位,EAN = 13 位

如果您只是将 UPC 738678251584(12 位)或 EAN 3253581057803(13 位)输入到 Amazon.com,它将在说明中显示为 UPC,但使用 API 您必须在搜索时指定 EAN。

我们有两种产品,您需要相应地指定搜索类型,否则将找不到。

编辑:或者您可以在任何 12 位数字前添加 0 并始终搜索 EAN。这可能是最好的解决方案。根据定义“0”+ UPC = EAN

这个请求对我有用(searchType 是 UPC 或 EAN):

        ItemLookup itemLookup = new ItemLookup()
        {
            AssociateTag = "XXXXX-20",
        };
        itemLookup.AWSAccessKeyId = ACCESS_ID;

        ItemLookupRequest itemLookupRequest = new ItemLookupRequest();
        itemLookupRequest.IdTypeSpecified = true;
        itemLookupRequest.IdType = searchType;
        itemLookupRequest.SearchIndex = "All";
        itemLookupRequest.ItemId = upcEanList;
        itemLookupRequest.ResponseGroup = new[] { "OfferSummary", "ItemAttributes" };
        itemLookup.Request = new ItemLookupRequest[] { itemLookupRequest };
于 2011-10-21T09:03:47.573 回答
0

我认为亚马逊不支持跨多个搜索索引的查询。但是,有一个名为的特殊索引All可用于 UPC 查找。与此索引一起使用的参数有一些限制,但由于您指定All了 forMerchantId并且Condition它可能会起作用。如果没有,您可以在不使用这些参数的情况下进行查询,然后在获得您感兴趣的 UPC 的 ASIN 后发出新的查询。

于 2011-01-11T06:10:15.693 回答