Я пытаюсь создать свой первый клиент веб-службы для 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 по сравнению с этим методом (если он работал).