3

我目前正在为一个业务应用程序修改一个文档文字 SOAP 服务,该应用程序来回传输有关客户的数据。

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

正在传输的图像最大为 32KB。

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

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

有任何想法吗?

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

4

1 回答 1

5

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

编辑:XML Schema 定义了“base64Binary”类型,因此您应该能够适当地定义您的 WSDL(假设您使用的是自动编组器)。至少,您应该在包含编码内容的元素上使用“xsi:type”属性。

于 2009-05-03T13:11:47.697 回答