Java SOAP - 产品广告 API - 响应为空

标签 java soap amazon-product-api

我已经创建了一个针对亚马逊产品 API 的搜索请求,但它的响应为空。 你能给我一个提示我的代码有什么问题吗?

代码:

String awsAccessKeyID = "<AWS-KEY>";
String test = "<ASSOCIATE-TAG>"; 

AWSECommerceService service = new AWSECommerceService();
service.setHandlerResolver(new AwsHandlerResolver("<SECRET-KEY>"));

AWSECommerceServicePortType port = service.getAWSECommerceServicePort();

ItemSearch ItemSearch = new ItemSearch();

ItemSearch.setAWSAccessKeyId(awsAccessKeyID);
ItemSearch.setAssociateTag(test);

ItemSearchRequest SearchRequest = new ItemSearchRequest();

java.util.List<ItemSearchRequest> list = ItemSearch.getRequest();

list.add(SearchRequest);

SearchRequest.setSearchIndex("All");


SearchRequest.setKeywords("nas");

ItemSearch.getRequest().add(SearchRequest);
ItemSearch.setMarketplaceDomain("https://ecs.amazonaws.de/onca/xml?Service=AWSECommerceService");


SearchRequest.getResponseGroup().add("Large");

Holder<OperationRequest> operationrequest = new Holder<OperationRequest>();

Holder<java.util.List<Items>> items = new Holder<java.util.List<Items>>();

port.itemSearch(ItemSearch.getMarketplaceDomain(), ItemSearch.getAWSAccessKeyId(), ItemSearch.getAssociateTag(), ItemSearch.getXMLEscaping(), "True", ItemSearch.getShared(), ItemSearch.getRequest(), operationrequest, items);

java.util.List<Items> result = items.value;
System.out.println(result);

结果集仍然是空的,但没有发生错误......

最佳答案

我发现了我犯的错误。

我创建的源没有亚马逊 wsdl 所需的 JAXB 绑定(bind)条件。 您需要一个包含以下限制的 binding.xml 文件

<jaxws:bindings wsdlLocation="http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
  <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>

在 pom.xml 中,我为构建过程创建了以下部分

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>1.10</version>
    <executions>
<execution>
        <goals>
            <goal>wsimport</goal>
        </goals>
        <configuration>
            <wsdlUrls>
                <wsdlUrl>http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl</wsdlUrl>
            </wsdlUrls>
            <sourceDestDir>target/generated-sources/apt</sourceDestDir>
            <bindingFiles>
                <bindingFile>../../conf/binding.xml</bindingFile>
            </bindingFiles>
        </configuration>
        <id>wsimport-generate-AWSECommerceService</id>
        <phase>generate-sources</phase>
    </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>javax.xml</groupId>
            <artifactId>webservices-api</artifactId>
            <version>1.4</version>
        </dependency>
    </dependencies>
</plugin>

重新创建源后,我将请求更改为以下内容:

String awsAccessKeyID = "<AWS-ACCESS-KEY>";
String test = "<ASSOCIATE-TAG>"; 

AWSECommerceService service = new AWSECommerceService();
service.setHandlerResolver(new AwsHandlerResolver("<SECRET-KEY>"));

AWSECommerceServicePortType port = service.getAWSECommerceServicePort();

ItemSearchRequest itemRequest = new ItemSearchRequest();

// Fill in the request object:
itemRequest.setSearchIndex("Electronics");
itemRequest.setKeywords("NAS");
itemRequest.getResponseGroup().add("ItemAttributes");
itemRequest.setItemPage(BigInteger.valueOf(1L));


ItemSearch ItemElement = new ItemSearch();
ItemElement.setAWSAccessKeyId(awsAccessKeyID);
ItemElement.setAssociateTag(test);
ItemElement.getRequest().add(itemRequest);

ItemSearchResponse response = port.itemSearch(ItemElement);

for (Items itemList : response.getItems()) {
    for (Item itemObj : itemList.getItem()) {
        System.out.println(itemObj.getItemAttributes().getBrand());
        System.out.println(itemObj.getItemAttributes().getEAN());
    }
}

关于Java SOAP - 产品广告 API - 响应为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12553107/

相关文章:

java - 如何在android中实现密码验证

java - 如何使用 Spring 和 thymeleaf 创建多页 pdf

node.js - 如何在node-soap中选择wsdl操作

java - SAXParseException - 解析 soap 响应时

Python AmazonAPI 错误 503 服务不可用

python - 使用 python-amazon-simple-product-api 提取最低二手商品价格

amazon-mws - 亚马逊MWS产品API如何检索销售排名和商户名称

java - Axis 代码生成错误 : IWAB0399E Error in generating Java from WSDL

Java EE7 回滚事务

java - 如何在 Spring Mvc 4 中同时运行两个 Soap 和 Json 的 Web 服务?