问题: Webservice 接口对于返回 blob 类型的数据,应该如何进行处理。
场景:项目中,需要为其他应用提供 Webservice 接口,返回结构为 xml 。
过程:对于一般的类型的数据,返回结果保存在 xml 中没有问题,而且我们对于数据的保存采用的是 CDATA ,但是对于blob类型,例如照片,文件等,就需要进行特殊处理。
- 直接插入 CDATA 中,显卡驱动报错,内存读取溢出。(原因是特殊字符的存在。)
- 引入 BASE64 编码,对binary的数据进行 encode ,显示 xml 返回结构不匹配,报错。(soap自动加载 CDATA)
- 数据结构去除 CDATA ,可以正常显示,但是速度比较慢,对于大批量的数据,速度难以忍受。
- 采用附件类型,应该可以解决这个问题。
对于附件类型的 Webservice ,没有很好的例子,不过可以参考 IBM Webservice Redbook 中的天气预报例子。而且对于附件类型的方法,IBM 没有直接生成的方法,需要手工进行设置。
结论:Webservice 目前还是天下大乱,具体实现机制差别较大,尤其是附件类型。同期项目中还有需要屏蔽数据库差异的问题,对于不同类型的数据库,blob的操作上也存在问题,看来还是急需 SDO 的到来啊。