Frage

Ich Modifiziere derzeit ein Dokument wörtlichen SOAP-Dienst für ein Business-App, die Daten über Kunden zurück überträgt und nach vorn.

Eine neue Anforderung gescannte Dokumentenbilder übertragen identifiziert gerade. Das Problem, das ich habe ist, dass die proprietäre Sprache, die ich benutze keine SOAP-Anhänge nicht unterstützt.

Die Bilder übertragen werden kann alles bis zu 32 KB sein.

Die einzige Lösung, die ich denken kann, ist zu base64 das Bild codiert, und übergeben Sie es als ein Element des XML-Dokuments durch.

Das fühlt sich an wie eine wirklich schlechte Idee, aber ich kann mich einfach nichts Besseres.

Irgendwelche Ideen?

EDIT: Ich vergaß zu erwähnen, dass das Bild nicht aus der Ferne in einem Dateisystem gehalten wird, ist es in einer Oracle-Datenbank gespeichert wird, was ich nicht die Möglichkeit hat, eine direkte Verbindung,

War es hilfreich?

Lösung

Wenn Sie XML als Datenübertragungsmechanismus verwenden, haben Sie das Bild in irgendeiner Weise zu kodieren. Der Grund dafür ist, dass XML ein Textformat ist, und ein XML-Prozessor versucht, binäre Daten zu dekodieren, als ob es sich um Text ist (genauer gesagt, als ob es UTF-8, wenn Sie eine andere Codierung angeben). Darüber hinaus XML nicht zulässt explizit mehrere Zeichen (ASCII meisten Nicht-Printables für XML 1.0, \ u0000 für XML 1.1), so dass Sie Ihre Daten beschädigen, wenn Sie nur die Bilddaten-Dump in (sagen wir) einen Abschnitt CDATA.

Edit: XML-Schema definiert eine "base64Binary" Typ, so dass Sie sollten entsprechend Ihrer WSDL festlegen können (vorausgesetzt, dass Sie eine automatisierte Einweiser verwenden). Zumindest sollten Sie eine verwenden „xsi: type“ auf das Attribut Element mit Ihrem codierten Inhalt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top