1

我正在尝试使用 NetBeans 的“新 Web 服务客户端”向导和此处找到的 WSDL 为 eBay API 制作我的第一个 Web 服务客户端。我的理解是这是使用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 比这种方法有什么好处(如果有效的话)。

4

1 回答 1

0

我设法弄清楚了,像往常一样,我因为没有彻底阅读 API 文档而自责。

eBay API 期望在提供 404 以外的任何内容之前设置某些 HTTP 标头。

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

eBay 购物 API HTTP 标头值

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

于 2009-01-03T15:34:16.920 回答