MTOM + XOP如何在WCF中获取二进制部分并防止它被编码到Base64

时间:2014-12-02 14:28:27

标签: wcf soap encoding mtom

我正在实现一个接收SOAP MTOM + XOP消息的客户端。 (XDS.b Consumer检索文档)

我知道对于小附件,附加文件将被base64编码到正文中,对于大附件,二进制数据将附加在单独的MIME部分和作为我的客户端代理类。 收到消息后,二进制数据已经作为base64编码到正文中,所以我实现了CustomEncoded和IncommingInspector,我能够在将消息返回给客户端之前看到缓冲区并转储消息。

我的问题:如果可能的话,我想阻止编码/解码到Base64的过程。我想得到二进制部分,将其写入文件(例如),如果可能的话,返回消息体中的文件位置而不是巨大的base64编码字符串。

这可能吗?

以下是我正在尝试处理的消息示例(二进制部分替换为...)

HTTP/1.1 200 OK
Date: Tue, 02 Dec 2014 11:07:55 GMT
Server: Apache
Set-Cookie: JSESSIONID=005193579FC6F91CC7BD0B671E616CB6; Path=/um
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: multipart/related; start-info="application/soap+xml"; type="application/xop+xml"; boundary="----=_Part_178_590817.1417518476024"

1ff8
------=_Part_178_590817.1417518476024
Content-Type: application/xop+xml; charset=utf-8; type="application/soap+xml"
Content-Id: <http://corp.com/xds_source>
Content-Transfer-Encoding: 8bit

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">
    <env:Header>
        <wsa:Action xmlns:wsa="http://www.w3.org/2005/08/addressing">urn:ihe:iti:2007:RetrieveDocumentSetResponse</wsa:Action>
            <wsa:RelatesTo xmlns:wsa="http://www.w3.org/2005/08/addressing">urn:uuid:123503ce-fba9-4bed-a77f-0cf6d9a51744</wsa:RelatesTo>
    </env:Header>
    <env:Body>
        <xdsb:RetrieveDocumentSetResponse xmlns:xdsb="urn:ihe:iti:xds-b:2007">
            <RegistryResponse xmlns="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0" status="urn:oasis:names:tc:ebxml-regrep:ResponseStatusType:Success"/>
            <xdsb:DocumentResponse><xdsb:RepositoryUniqueId>SAMPLE:12345678</xdsb:RepositoryUniqueId>
            <xdsb:DocumentUniqueId>1.2.840.113704.7.1.0.14117819932881.1416384260.2</xdsb:DocumentUniqueId>
            <xdsb:mimeType>application/vnd.openxmlformats-officedocument.wordprocessingml.document</xdsb:mimeType>
            <xdsb:Document><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:1.urn:uuid:179268344.0@corp.org"/>
            </xdsb:Document>
            </xdsb:DocumentResponse>
        </xdsb:RetrieveDocumentSetResponse>
    </env:Body>
</env:Envelope>
------=_Part_178_590817.1417518476024
Content-Type: application/octet-stream
Content-ID: <1.urn:uuid:179268344.0@corp.org>
Content-Transfer-Encoding: binary
...
------=_Part_178_590817.1417518476024--

0 个答案:

没有答案