我在 EXCEL 电子表格中的 VBA 中有以下测试代码。我正在尝试使用 MSXML2.ServerXMLHTTP 从远程服务中检索 JSON(最终可能需要存储和发送 cookie 以创建会话以获取日期,因此我正在寻找最灵活的选项,它似乎是 ServerXMLHTTP,我可能是当然这里错了)
使用 https 访问站点时出现运行时错误 -2147012866 80072efe “与服务器的连接异常终止”
查看其他一些问题表明这可能是防火墙问题...我关闭了 windows 防火墙进行测试,结果是相同的。
经过一些实验 MSXML2.XMLHTTP 工作正常。此外,如果我使用 http 访问同一站点,我不会收到任何错误。在下面的这个测试代码中,我得到了 MSXML2.ServerXMLHTTP 和 WinHttp.WinHttpRequest 的相同错误
Sub TestRequest()
Dim objHttp As New MSXML2.XMLHTTP
Dim objServHttp As New MSXML2.ServerXMLHTTP
Dim objWinHttp As New WinHttp.WinHttpRequest
Dim URL As String
'URL = "http://api.fixer.io/2017-10-10?base=gbp"
URL = "https://api.fixer.io/2017-10-10?base=gbp"
objHttp.Open "GET", URL, False
On Error GoTo Error_request_1
objHttp.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHttp.send ("")
Error_request_1:
'objServHttp.setOption 2, objServHttp.GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS 'Ignore Possible certificate errors
'objServHttp.setOption 2, 13056 'Ignore possible certificate errors
objServHttp.Open "GET", URL, False
On Error GoTo Error_request_2
objServHttp.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objServHttp.send ("")
Error_request_2:
Stop
objWinHttp.Open "GET", URL, False
On Error GoTo Error_request_3
objWinHttp.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objWinHttp.send ("")
Error_request_3:
Stop
End Sub
我假设我设置了错误的选项,但我发现这些文档很难找到......
非常感谢任何帮助尝试使这些适用于 https 的帮助。