У меня есть следующий тестовый код в VBA в электронной таблице EXCEL. Я пытаюсь использовать MSXML2.ServerXMLHTTP для извлечения JSON из удаленной службы (в конечном итоге может потребоваться сохранение и отправка файлов cookie для создания сеанса для получения даты, поэтому я ищу наиболее гибкий вариант, который кажется ServerXMLHTTP, я могу быть здесь конечно не так)
Я получал ошибку времени выполнения -2147012866 80072efe «Соединение с сервером было аварийно прервано» при доступе к сайту с https
Глядя на некоторые другие вопросы, можно предположить, что это может быть проблема с брандмауэром ... Я отключил брандмауэр 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.