Альтернативы отправке изображения в base64 через документ SOAP

StackOverflow https://stackoverflow.com/questions/817021

  •  03-07-2019
  •  | 
  •  

Вопрос

В настоящее время я изменяю сервис SOAP с документами на документы для бизнес-приложения, которое передает данные о клиентах вперед и назад.

Только что определено новое требование для передачи отсканированных изображений документов. У меня проблема в том, что используемый мной проприетарный язык не поддерживает вложения SOAP.

Передаваемые изображения могут быть размером до 32 КБ.

Единственное решение, которое я могу придумать, - это кодировать изображение с помощью base64 и передавать его как элемент документа XML.

Это похоже на действительно плохую идею, но я просто не могу придумать ничего лучшего.

Есть идеи?

РЕДАКТИРОВАТЬ: я забыл упомянуть, что изображение не хранится удаленно в файловой системе, оно хранится в базе данных Oracle, к которой у меня нет возможности подключаться напрямую,

Это было полезно?

Решение

Если вы используете XML в качестве механизма передачи данных, вам необходимо каким-то образом кодировать изображение. Причина в том, что XML является текстовым форматом, и процессор XML будет пытаться декодировать двоичные данные, как если бы они были текстовыми (более конкретно, как если бы это было UTF-8, если вы не укажете другую кодировку). Более того, XML явно запрещает несколько символов (большинство непечатных ASCII для XML 1.0, \ u0000 для XML 1.1), поэтому вы повредите свои данные, если просто сбросите данные изображения в (скажем) раздел CDATA.

Изменить: XML-схема определяет тип " base64Binary " , поэтому вы должны быть в состоянии определить ваш WSDL соответствующим образом (при условии, что вы используете автоматизированный маршаллер). По крайней мере, вы должны использовать " xsi: type " в элемент, содержащий ваше закодированное содержимое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top