Question

Je suis en train de modifier un service SOAP littéral de document pour une application métier qui transfère des données relatives aux clients en amont et en aval.

Une nouvelle exigence concernant le transfert d'images de document numérisées vient d'être identifiée. Le problème que j’ai, c’est que le langage propriétaire que j’utilise ne prend pas en charge les pièces jointes SOAP.

Les images en cours de transfert peuvent contenir jusqu’à 32 Ko.

La seule solution à laquelle je puisse penser est de coder l'image en base64 et de la transmettre en tant qu'élément du document XML.

Cela semble être une très mauvaise idée, mais je ne vois rien de mieux.

Des idées?

EDIT: j'ai oublié de mentionner que l'image n'est pas conservée à distance dans un système de fichiers, elle est stockée dans une base de données Oracle, à laquelle je n'ai pas la possibilité de me connecter directement,

Était-ce utile?

La solution

Si vous utilisez XML comme mécanisme de transfert de données, vous devez coder l'image d'une manière ou d'une autre. La raison en est que XML est un format de texte et un processeur XML tente de décoder les données binaires comme s'il s'agissait de texte (plus précisément, comme s'il s'agissait du format UTF-8, à moins que vous ne spécifiiez un codage différent). De plus, XML interdit explicitement plusieurs caractères (la plupart des caractères non imprimables ASCII pour XML 1.0, \ u0000 pour XML 1.1). Vous allez donc corrompre vos données si vous ne faites que vider les données de l’image dans une section CDATA.

Modifier: le schéma XML définit un type & "; base64Binary" et . vous devriez être capable de définir votre WSDL correctement (en supposant que vous utilisiez un marshaller automatisé). Au minimum, vous devez utiliser un attribut & x; "xsi: type" & ; l'élément contenant votre contenu encodé.

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