soap消息如何传送附件
项目中使用了soap接口实现远程通讯,有文件传送的需求。常见的解决方案如下:
- 文件内容读出后,使用base64编码传输
- 通过MTOM方式,以消息附件发送
- 如果文件内容过大,可以先通过soap消息传递文件信息,服务端再使用sftp等文件协议主动下载(此方式成本较高,要求客户端提供文件服务)
本文介绍一下第二种方式的处理。
MTOM(Message Transmission Optimization Mechanism),消息传输优化机制,允许将消息中包含的大型数据元素外部化,并将其作为无任何特殊编码的二进制数据随消息一起传送。
*消息定义*
在编写wsdl时,消息结构字段按照如下方式定义:
<element name="Attachment">
<complexType>
<sequence>
<element name="filename" type="xsd:string"/>
<element name="content" type="xsd:base64Binary"/>
</sequence>
</complexType>
</element>
为了将其中的content字段转换成附件形式,需要对将该字段按照如下方式定义:
<element n