2009-01-03 7 views
1

J'essaie de créer mon premier client de service Web pour l'API eBay en utilisant l'assistant de nouveau service Web de NetBeans et le WSDL trouvé here. Ma compréhension est que cela utilise JAX-WS pour générer des fichiers de classe, et mes demandes sont toutes SOAP.Client de services Web NetBeans produisant une requête invalide

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

Wireshark montre ma demande comme:

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

Alors NetBeans a enveloppé ma demande avec ce que je ne peux que supposer une certaine structure SOAP standard et ajoute 'Request' au nom de l'appel.

D'où vient cet espace de nommage '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 sur cette méthode (si cela a fonctionné).

Répondre

0

J'ai réussi à comprendre et, comme d'habitude, je me botte de ne pas lire les documents de l'API à fond.

L'API eBay attend certains en-têtes HTTP à définir avant qu'il ne donne rien d'autre qu'un 404.

Après cela, les NetBeans de requête SOAP retenue a été interprété correctement par eBay et les résultats attendus sont revenus.

eBay shopping API HTTP header values

JAX-WS user guide - setting HTTP headers