header
Informatique

Webservice, binaire et base64

parArkenle 14.Dec.2007

Un web service java génère grâce à FOP un PDF à partir d'une chaîne XML et d'une chaîne XSLFO.
La fonction en question retourne un array de bytes.
Jusque là tout est très simple.

Maintenant, je souhaite consommer ce web service.

Avec un client .NET ça se fait sans souci, on ajoute en "Web References" l'URL du web service, et ça nous génère tout seul la classe proxy qui va bien. Il suffit d'appeler la fonction "generate" et on récupère nativement un array de bytes.

Sauf que je souhaite consommer le web service depuis un flux IBM Websphere Message Broker, et c'est là que ça se gatte...depuis un moment je me demandais comment un web service peut retourner du binaire dans une réponse SOAP qui se trouve être du texte pur ?

En pratique, dans la réponse SOAP que je recevais, j'avais une chaine de plus de 10.000 caractères...alors que le PDF final (généré avec d'autres moyen) ne pesait que 7.000 octets et des poussières.


Première réaction : WTF ??!!! Comment physiquement peut-on passer de 10.000 caractères dans la réponse SOAP à 7.000 dans le fichier PDF final ?

Là je tente toutes les conversions possibles et imaginables : vers de l'unicode, UTF8, UTF16, UTF32, j'en passe et des meilleurs.
Bizarrement, la conversion en unicode semble se rapprocher étrangement du PDF final.

Google, google encore, pas une piste...


Deuxième réaction : pourquoi les caractères renvoyés vont de "a" à "Z", de "0" à "9" plus "=" et "+" ?

Je crois que j'ai touché un point sensible. Lors de mes recherches précédentes, j'ai entrevu un terme qui a retenu mon attention "codage Base64".
Et là tout s'enchaîne : wikipedia m'apprend que c'est justement le but de Base64 d'encoder n'importe quoi avec a-Z, 0-9, + et =.
Google de son coté m'apprend qu'apparement SOAP encode tout ce qui est binaire en Base64. Paix et joie sur la terre.


Je teste vite fait en .NET, et là c'est la libération, la chaîne reçue de mon web service décodée du Base64 donne exactement le contenu du PDF en binaire.

Marvelous. C'est con, mais quand on le sait pas...


Tags :
commentaires
Aucun commentaire


Code de confirmation
Confirmer

Les cigares, vous les aimez comment ?
23%
70%
7%