axis2 mtom mime boundary



我有一个使用 ADB 绑定创建的 axis2 客户端。此 axis2 客户端与 WCF Web 服务通信,以 MTOM 模式向其发送 XML 附件。生成的 SOAP 请求为:

POST http://xyz/mtom HTTP/1.1
MIME-Version: 1.0
Content-Type: multipart/related;
type="application/xop+xml";
start="<http://tempuri.org/0>";
boundary="uuid:0daa5c61-46d2-4fe1-9944-097b897367b4+id=1";
start-info="application/soap+xml"; 
action="http://blahblah/SendData"
Host: myserver.org
Content-Length: 22648
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
--uuid:0daa5c61-46d2-4fe1-9944-097b897367b4+id=1
 Content-ID: <http://tempuri.org/0>

如何将内容传输编码:二进制(如下)转换为内容传输编码:8位?

 Content-Transfer-Encoding: binary
 Content-Type: application/xop+xml;charset=utf-8;type="application/soap+xml"
 <s:Envelope><s:Body><SendData>...</SendData></s:Body></s:Envelope>
 --uuid:0daa5c61-46d2-4fe1-9944-097b897367b4+id=1
 Content-ID: <http://tempuri.org/1/634789954872318389>
 Content-Transfer-Encoding: binary
 Content-Type: application/octet-stream
 Serialized payload here
 --uuid:0daa5c61-46d2-4fe1-9944-097b897367b4+id=1--

另外,我想一个mime_boundary用于主肥皂信封,第二个mime_boundary用于附件

不,这是不可能的,这是有充分理由的。8bit编码定义如下:

每行最多 998 个八位字节,CR 和 LF(分别为代码 13 和 10)仅允许作为 CRLF 行尾的一部分出现。

这意味着有些消息无法编码为 8bit 。在开始写入消息之前,Axis2 必须检查消息是否可以编码为8bit。这将引入不必要的开销。因此,Axis2 仅支持 binarybase64,因为它们允许对任何消息进行编码(并且任何 SOAP 堆栈都支持它们)。

无论如何,你为什么要使用它8bit

相关内容

  • 没有找到相关文章

最新更新