Domanda

Attualmente sto modificando un servizio SOAP letterale per un documento per un'app aziendale che trasferisce i dati sui clienti avanti e indietro.

È stato appena identificato un nuovo requisito per il trasferimento delle immagini dei documenti scansionati. Il problema che ho è che il linguaggio proprietario che utilizzo non supporta gli allegati SOAP.

Le immagini che vengono trasferite possono avere una dimensione massima di 32 KB.

L'unica soluzione che mi viene in mente è quella di codificare base64 l'immagine e passarla attraverso come elemento del documento XML.

Sembra una pessima idea, ma non riesco proprio a pensare a niente di meglio.

Qualche idea?

EDIT: ho dimenticato di dire che l'immagine non è conservata in remoto in un file system, è memorizzata in un database Oracle, a cui non ho la possibilità di connettermi direttamente,

È stato utile?

Soluzione

Se si utilizza XML come meccanismo di trasferimento dei dati, è necessario codificare l'immagine in qualche modo. Il motivo è che XML è un formato di testo e un processore XML tenterà di decodificare i dati binari come se fosse un testo (più specificamente, come se fosse UTF-8 a meno che non si specifichi una codifica diversa). Inoltre, XML non consente esplicitamente più caratteri (la maggior parte dei non stampabili ASCII per XML 1.0, \ u0000 per XML 1.1), quindi corromperai i tuoi dati se scarichi i dati dell'immagine in (diciamo) una sezione CDATA.

Modifica: lo schema XML definisce un " base64Binary " , quindi dovresti essere in grado di definire il tuo WSDL in modo appropriato (supponendo che stai utilizzando un marshaller automatizzato). Almeno, dovresti usare un " xsi: digitare " su l'elemento che contiene il contenuto codificato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top