通过文档文字SOAP在base64中发送图像的替代方法

kin*_*man 3 base64 soap image attachment

我目前正在为业务应用程序修改文档文字SOAP服务,该服务应用程序向后和向前传输有关客户的数据.

刚刚确定了传输扫描文档图像的新要求.我遇到的问题是我使用的专有语言不支持SOAP附件.

传输的图像可以是任何高达32KB的图像.

我能想到的唯一解决方案是对图像进行base64编码,并将其作为XML文档的一个元素传递给它.

这感觉真是个坏主意,但我想不出更好的事情.

有任何想法吗?

编辑:我忘了提,远程文件系统中的图像不举行,它是存储在Oracle数据库中,我并没有直接连接到的能力,

kdg*_*ory 5

如果您使用XML作为数据传输机制,则必须以某种方式对图像进行编码.原因是XML是一种文本格式,XML处理器将尝试解码二进制数据,就像它的文本一样(更具体地说,就好像它是UTF-8,除非你指定不同的编码).此外,XML明确禁止使用多个字符(对于XML 1.0,大多数ASCII非打印,对于XML 1.1,为\ u0000),因此如果您只是将图像数据转储到(例如)CDATA部分,则会损坏数据.

编辑:XML模式定义了一个"base64Binary的"类型,所以你应该能够适当地定义你的WSDL(假设你使用的是自动编组).至少,您应该在包含编码内容的元素上使用"xsi:type"属性.