首页 > 解决方案 > 对来自 VB5 应用程序的 POST 请求使用 MSXML2.ServerXMLHTTP 而不是 XMLHTTP 来处理 HTTPS

问题描述

我一直在使用 XMLHTTP 向带有下一个代码的 WCF(自托管在 Windows 服务中)端点发出 HTTP POST 请求(来自 VB5 应用程序),并且一切都按预期工作,

Dim xmlhttp As MSXML2.XMLHTTP30
Dim blnSuccess As Boolean
Dim resp, strTit, strRes As String
Dim intPos1, intPos2, intPos3 As Integer
Dim mType As VbMsgBoxStyle

Set xmlhttp = New MSXML2.XMLHTTP30
xmlhttp.Open "POST", strURL, False
xmlhttp.setRequestHeader "Man", "POST " & strURL & " HTTP/1.1"
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", strSOAPAction
Call xmlhttp.send(strSoap)

但是,由于我被要求从 HTTP 更改为 HTTPS 必须通过将证书绑定到端口来更改 WCF 以添加和 SSL 证书,并且在执行邮递员的请求时一切正常,但问题是当我尝试测试它时在我的 VB 应用程序上它不起作用,并提示我出现此错误 run time error -214669728 (800c0008) The download of the specified resource has failed。因此,在进行一些研究时,我将代码更改为使用 SeverXMLHTTP 而不是 XMLHTTP 和 setOption 来绕过证书错误,如下面的代码所示

Dim xmlhttp As MSXML2.ServerXMLHTTP30
Dim blnSuccess As Boolean
Dim resp, strTit, strRes As String
Dim intPos1, intPos2, intPos3 As Integer
Dim mType As VbMsgBoxStyle

Set xmlhttp = New MSXML2.ServerXMLHTTP30
xmlhttp.Open "POST", strURL, False
xmlhttp.setRequestHeader "Man", "POST " & strURL & " HTTP/1.1"
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
xmlhttp.setRequestHeader "SOAPAction", strSOAPAction
xmlhttp.setOption 2, 13056
blnSuccess = False

Call xmlhttp.send(strSoap)

问题是我一直在阅读,顾名思义,SeverXMLHTTP 必须用于服务器应用程序而不是客户端,因为我的 VB 在这种情况下运行。我参考了这篇文章

我担心这是否是正确的路径,但在阅读本文时 ,我认为即使这个对象指向服务器到服务器之间的通信,我也不会遇到问题。

任何人都可以指导我一点,到目前为止我在测试一切时观察到的一切都很好,但我对使用这个对象不太有经验。谢谢

标签: httpsxmlhttprequestserverxmlhttpvb5

解决方案


推荐阅读