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

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

正在传输的图像可以是任何高达32KB的图像。

我能想到的唯一解决方案是对图像进行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