-
Un client "presque" SOAP
Bonjour,
Je suis dans l'hésitation au niveau du choix des outils. Je dois construire un client SOAP, mais cependant le fournisseur du service, pour diverses raisons qui lui paraissent justifiées, a placé quelques aménagements à lui dans la norme SOAP. À vrai dire ce n'est pas du SOAP, mais il se trouve que cela en est quelques fois.
Ainsi il faut faire précéder le message SOAP par une chaine de caractères (par ex. "RequestMess=<?xml"... suit le message SOAP), il ne faut pas mettre xml comme type mime, mais form-urlencoded et ainsi de suite ; je découvre les "aménagements" au fur et à mesure.
Du coup je ne sais pas s'il est justifié d'utiliser un outil comme Axis pour faire le client, puisque je me retrouve en permanence à plonger dans la tuyauterie interne - que je ne connais pas plus que ça, et dont la doc me parait pour le moins pas très claire, pour négocier avec les particularismes.
J'ai essayé avec HttpClient sur un message prédéfini, et au moins ça marche tout de suite - mais cela m'oblige à refaire tout ce qui existe à 90% dans Axis.
Que feriez-vous à ma place ? Entrer dans la tuyauterie d'Axis, ou faire à la va-comme-je-te-pousse avec HttpClient ? Y a-t-il un paquetage qui soit entre les deux ?
Merci d'avance pour vos idées.
-
je verrais bien un intermédiaire qui s'occupe de faire la conversion.
ton client ferait donc du soap "standard", et l'envoie a l'intermédiaire
qui s'occupe de la convertion et appelle le serveur final avec du soap "custom"
si ce n'est pas possible, j'utiliserais HTTPClient pour ce qui est HTTP, et
une autre lib (JAXB?) pour créer le message SOAP.
A+
-
Le problème est que je ne suis pas encore parvenu à choper la portion HTTP (ou https, pour être précis) de l'échange SOAP avec Axis ! Je tournique depuis je ne sais combien de temps, et je n'ai pas compris comment on pouvait choper le flux just'avant qu'il ne s'échappe sur le réseau, ou juste après son retour.
Je comprends rien à la doc sur ces sujets (et de toutes façons du patois Axis je ne parviens même pas à trouver ce qui correspond à mon langage à moi), et tous mes essais sont des échecs.
Quand à un deal JAXB/HTTPClient... pourquoi pas, car je ne connais pas JAXB, et ce serait l'occasion de s'y mettre, si c'est pas trop long à se former ? Cela se transforme facilement, un message plus ou moins soap (cela semble être du SOAP à 99% quand même) avec JAXB ?
-
Je connais pas très bien jaxb, mais il permet de faire du
mapping java -> xml
donc cela peut aider à créer le Body du soap.
Après il faut peut-être ajouter l'enveloppe, voir un header si besoin...
Il y a même peut-être d'autre lib mieux adaptée que jaxb pour soap ... à voir ..
un petit lien sympa sur jaxb, chap 37 tu tutoriel jmd des cours et tutoriels pour apprendre Java : http://java.developpez.com/cours/
A+
-
Plus ça va, plus j'ai l'impression que la partie proprement SOAP fond comme neige au soleil dans mon appli... Donc l'option JAXB+HTTPClient semble être la moins mauvaise.
Cependant, à partir du moment où on a le message XML, est-ce difficile de le mettre dans un échange SOAP, ou dans ce qui en reste ?
... et JAXB est-il un bon cheval ? Certes le fait qu'il soit intégré au JDK est un TRES BON POINT, mais il se peut qu'il soit pas terrible quand même ? Le DOM n'a pas très bonne presse, pourtant il est aussi dans le JDK, et je crois avoir compris qu'Axis se servait d'un truc nommé Axiom pour ses mappings au lieu de JAXB ?...
Que faire, non d'un chien, que faire.