Клиент веб-служб NetBeans, выдавший неверный запрос - PullRequest
1 голос
/ 03 января 2009

Я пытаюсь создать свой первый клиент веб-службы для API eBay, используя мастер «Новый клиент веб-службы» NetBeans, и 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, и добавляет «Запрос» к имени вызова.

Откуда он берет это пространство имен 'envelope' и почему eBay не использует его? И как я могу сказать NetBeans, что я действительно хочу, чтобы он делал?

Мне также интересно, каково преимущество eKay SDK по сравнению с этим методом (если он работал).

1 Ответ

0 голосов
/ 03 января 2009

Мне удалось выяснить это, и, как обычно, я пинаю себя за то, что не полностью прочитал документацию по API.

eBay API ожидает установки определенных заголовков HTTP, прежде чем он выдаст что-либо кроме 404.

После этого полученный с помощью NetBeans SOAP-запрос был правильно интерпретирован eBay, и ожидаемые результаты вернулись.

Значения HTTP-заголовка API eBay для шоппинга

Руководство пользователя JAX-WS - настройка заголовков HTTP

...