我正在尝试使用NetBeans的新Web服务客户端向导为eBay API创建我的第一个Web服务客户端,并且找到了WSDL 这里。我的理解是,这是使用JAX-WS生成类文件,我的请求都是SOAP。

除非我尝试执行请求,否则所有内容似乎都能正常工作,eBay会回复404,如果调用没有任何意义,它似乎是标准响应。

Wireshark将我的请求显示为:

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<FindItemsRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<QueryKeywords>dvd players</QueryKeywords>
</FindItemsRequest></S:Body></S:Envelope>

但是eBay API测试工具说它看起来应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<FindItems xmlns="urn:ebay:apis:eBLBaseComponents">
<QueryKeywords>dvd players</QueryKeywords>
</FindItems>

因此,NetBeans已将我的请求包含在我只能假设的标准SOAP结构中,并将“请求”附加到调用的名称。

它从哪里获得这个'信封'命名空间,为什么eBay不使用它?我怎样才能告诉NetBeans我真正想要它做什么?

我也想知道eBay SDK对这种方法的好处是什么(如果有效)。

有帮助吗?

解决方案

我设法弄明白了,像往常一样,我一直在努力不彻底阅读API文档。

eBay API要求在提供除404之外的任何内容之前设置某些HTTP标头。

之后,eBay正确解释了NetBeans提出的SOAP请求,并返回了预期的结果。

eBay shopping API HTTP标头值

JAX-WS用户指南 - 设置HTTP标头

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top