gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:33:47 25 4
gpt4 key购买 nike

我已经创建了一个针对亚马逊产品 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com