使用文档字面量SOAP发送base64图像的替代方案

3

我目前正在修改一个文档字面量SOAP服务,用于传输有关客户的数据。

刚刚识别了传输扫描文档图像的新要求。我的问题是我使用的专有语言不支持SOAP附件。

被传输的图像可以是任何高达32KB的东西。

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

这感觉像一个非常糟糕的主意,但我就是想不到更好的办法。

有什么想法吗?

编辑:我忘记提到图像不是在文件系统中远程保存的,而是存储在Oracle数据库中,我无法直接连接该数据库。

1个回答

5
如果您使用XML作为数据传输机制,您必须以某种方式编码图像。原因是XML是一种文本格式,XML处理器将尝试将二进制数据解码为文本(更具体地说,除非指定不同的编码,否则将尝试将其解码为UTF-8)。此外,XML明确禁止几个字符(对于XML 1.0来说,大多数ASCII不可打印字符,对于XML 1.1来说则是\u0000),因此如果您只是将图像数据转储到CDATA部分中,您将破坏数据。
编辑:XML模式定义了"base64Binary"类型,因此您应该能够适当定义您的WSDL(假设您正在使用自动化编组程序)。至少,您应该在包含已编码内容的元素上使用"xsi:type"属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接