Pregunta

Actualmente estoy modificando un servicio SOAP literal de documentos para una aplicación comercial que transfiere datos sobre clientes hacia adelante y hacia atrás.

Se acaba de identificar un nuevo requisito para transferir imágenes de documentos escaneados. El problema que tengo es que el lenguaje propietario que uso no es compatible con los archivos adjuntos SOAP.

Las imágenes que se transfieren pueden ser de hasta 32 KB.

La única solución que se me ocurre es codificar en base64 la imagen y pasarla como un elemento del documento XML.

Esto se siente como una muy mala idea, pero no puedo pensar en nada mejor.

¿Alguna idea?

EDITAR: olvidé mencionar que la imagen no se mantiene de forma remota en un sistema de archivos, se almacena en una base de datos de Oracle, a la que no puedo conectarme directamente,

¿Fue útil?

Solución

Si está utilizando XML como mecanismo de transferencia de datos, debe codificar la imagen de alguna manera. La razón es que XML es un formato de texto, y un procesador XML intentará decodificar datos binarios como si fuera texto (más específicamente, como si fuera UTF-8 a menos que especifique una codificación diferente). Además, XML explícitamente no permite varios caracteres (la mayoría de los ASCII no imprimibles para XML 1.0, \ u0000 para XML 1.1), por lo que dañará sus datos si simplemente descarga los datos de la imagen en (por ejemplo) una sección CDATA.

Editar: el esquema XML define un tipo " base64Binary " , por lo que deberías poder definir tu WSDL de manera apropiada (suponiendo que estés usando un marshaller automatizado). Como mínimo, debe usar el atributo " xsi: type " en el elemento que contiene su contenido codificado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top