Клиент веб-служб NetBeans создает недопустимый запрос для eBay API

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

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

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


person Cogsy    schedule 03.01.2009    source источник


Ответы (1)


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

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

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

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

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

person Cogsy    schedule 03.01.2009