我有一个使用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用于附件
答案 0 :(得分:1)
不,这是不可能的,而且有充分的理由。 8bit
编码定义如下:
每行最多998个八位字节,CR和LF(分别为代码13和10)只允许作为CRLF行结尾的一部分出现。
这意味着有些消息无法编码为8bit
。在开始编写消息之前,Axis2必须检查消息是否可以编码为8bit
。这会带来不必要的开销。因此,Axis2仅支持binary
和base64
,因为它们允许对任何消息进行编码(预计任何SOAP堆都支持它们)。
无论如何,为什么要让它使用8bit
?