Question

J'essaie de créer mon premier client de service Web pour l'API eBay en utilisant l'assistant du nouveau client de service Web de NetBeans et le WSDL a trouvé ici . D'après ce que j'ai compris, JAX-WS est utilisé pour générer des fichiers de classe. Mes requêtes sont toutes SOAP.

Tout semble bien fonctionner, sauf lorsque j'essaie d'exécuter une demande. eBay répond par un message 404, qui semble être sa réponse standard si l'appel n'a aucun sens.

Wireshark affiche ma demande sous la forme suivante:

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

Mais l'outil de test d'API eBay dit qu'il devrait ressembler à:

<?xml version="1.0" encoding="utf-8"?>
<FindItems xmlns="urn:ebay:apis:eBLBaseComponents">
<QueryKeywords>dvd players</QueryKeywords>
</FindItems>

NetBeans a donc encapsulé ma demande avec ce que je peux seulement supposer être une structure SOAP standard et a ajouté le mot "Demande" au nom de l'appel.

D'où provient cet espace de noms 'enveloppe' et pourquoi eBay ne l'utilise-t-il pas? Et comment puis-je dire à NetBeans ce que je veux vraiment qu'il fasse?

Je me demande également quel est l'avantage pour le SDK eBay par rapport à cette méthode (si elle a fonctionné).

Était-ce utile?

La solution

J'ai réussi à le comprendre et, comme d'habitude, je me reproche de ne pas avoir lu attentivement la documentation de l'API.

L'API eBay s'attend à ce que certains en-têtes HTTP soient définis avant de donner autre chose qu'un 404.

Après cela, la requête SOAP proposée par NetBeans a été interprétée correctement par eBay et les résultats attendus ont été renvoyés.

Valeurs de l'en-tête de l'API eBay shopping

Guide de l'utilisateur JAX-WS - définition des en-têtes HTTP

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top