我在EXCEL电子表格中的VBA中有以下测试代码。 我试图使用MSXML2.ServerXMLHTTP从远程服务中检索JSON(最终可能需要存储和发送cookie来创建会话以获取日期,所以我正在寻找最灵活的选项,似乎是ServerXMLHTTP,我可能是当然在这里错了)
我收到运行时错误-2147012866 80072efe"与服务器的连接异常终止"使用https访问网站时
看一些other questions表示这可能是防火墙问题...... 我关闭了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的帮助。