【问题标题】:How to download an MTOM attachment in VB6如何在 VB6 中下载 MTOM 附件
【发布时间】:2018-11-13 15:01:55
【问题描述】:

请,有人可以给我看一个关于如何下载 MTOM 附件并使用 VB6 将其保存到磁盘的示例吗?

目前,我可以使用以下代码从我的 ws 获得响应:

Dim objDom As Object
Dim objXmlHttp As Object
Dim strRet As String
Dim intPos1 As Integer
Dim intPos2 As Integer
On Error GoTo Err_PW
' Create objects to DOMDocument and XMLHTTP
Set objDom = CreateObject("MSXML2.DOMDocument")
Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")

'Set objXmlHttp = New MSXML2.XMLHTTP40
' Load XML
objDom.async = False
objDom.loadXML XmlBody

' Open the webservice
objXmlHttp.Open "POST", AsmxUrl, False
' Create headings
objXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
objXmlHttp.setRequestHeader "SOAPAction", SoapActionUrl

' Send XML command
objXmlHttp.Send (objDom.xml)
' Get all response text from webservice
strRet = objXmlHttp.responseText

但从这一点来看,我不知道如何继续获取 MTOM 附件。

这是从ws返回的:

--uuid:0b9372cf-63bb-484f-87f3-7bedfaa776fb
Content-Id: <rootpart*0b9372cf-63bb-484f-87f3-7bedfaa776fb@example.jaxws.sun.com>
Content-Type: application/xop+xml;charset=utf-8;type="text/xml"
Content-Transfer-Encoding: binary

<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body><ns2:getContentStreamResponse xmlns:ns2="http://docs.oasis-open.org/ns/cmis/messaging/200908/" xmlns="http://docs.oasis-open.org/ns/cmis/core/200908/">
<ns2:contentStream>
<ns2:length>2572861</ns2:length>
<ns2:mimeType>application/vnd.openxmlformats-officedocument.wordprocessingml.document</ns2:mimeType>
<ns2:filename>SF-MASTER - SDTC.docx</ns2:filename>
<ns2:stream>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:4b7c8c60-fc9e-4da8-92fc-aa8c2fdfb401@example.jaxws.sun.com"/></ns2:stream>
</ns2:contentStream>
</ns2:getContentStreamResponse>
</S:Body>
</S:Envelope>
--uuid:0b9372cf-63bb-484f-87f3-7bedfaa776fb
Content-Id: <4b7c8c60-fc9e-4da8-92fc-aa8c2fdfb401@example.jaxws.sun.com>
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Content-Transfer-Encoding: binary

PK
31/05/2018 10:04:06: UUID documento: 0b9372cf-63bb-484f-87f3-7bedfaa776fb
31/05/2018 10:04:06: Tag finale: --uuid:0b9372cf-63bb-484f-87f3-7bedfaa776fb--
31/05/2018 10:04:06: lunghezza documento: 2572861

非常感谢

【问题讨论】:

  • 希望不是您将我的答案标记为无用?不知道为什么它没有用。您是否尝试过并遇到问题或不明白它为什么有效?无论如何,评论似乎更合适
  • 谢谢 dbmitch。对你的回复投反对票的不是我。可能是一些巨魔。对不起
  • 感谢-谢谢。我以前见过它,但不明白为什么。这一定是个人的事情,因为它自己也花费了他们 2 分。通常是一个解释。祝你工作顺利。

标签: web-services vb6 mtom


【解决方案1】:

Use this as a guide 并修改您的代码以将返回的文件数据保存为二进制文件。

添加到函数顶部

Const adTypeBinary = 1
Const adSaveCreateOverWrite = 2

Dim varByteArray, ado
Dim strFile as String

发送请求后插入此代码

If objXmlHttp.Status <> "200" Then
    Exit Function
End If

' Pull this from returned header data
strFile = "SF-MASTER - SDTC.docx"

' get file contents
varByteArray = objXmlHttp.ResponseBody

Set objXmlHttp= Nothing

'Now save the binary file
On Error Resume Next
Set ado = Nothing
Set ado = CreateObject("ADODB.Stream")
ado.Type = adTypeBinary
ado.Open
ado.Write varByteArray
ado.SaveToFile strFile, adSaveCreateOverWrite
ado.Close

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 1970-01-01
    • 2017-06-11
    • 2015-10-14
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多