Вопрос

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

Но инструмент тестирования API eBay утверждает, что это должно выглядеть так:

<?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.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top