Здравствуйте. Помогите пожалуйста разобраться. Делаю запрос к адресу https://api.livecoin.net/exchange/ticker с помощью объекта MSXML2.ServerXMLHTTP и получаю странное сообщение об ошибке -"Error: №-2146893018 - Получено непредвиденное сообщение или оно имеет неправильный формат." Причем не на все https адреса такая реакция. Некоторые нормально загружает. В google решения не нашел. Грешил на систему - XP32, но браузер нормально загружает. Вот код
Код
Option Explicit
Const SXH_SERVER_CERT_IGNORE_UNKNOWN_CA = 256
Const SXH_SERVER_CERT_IGNORE_WRONG_USAGE = 512
Const SXH_SERVER_CERT_IGNORE_CERT_CN_INVALID = 4096
Const SXH_SERVER_CERT_IGNORE_CERT_DATE_INVALID = 8192
Const SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS = 13056
'
Sub GetHTTPResponse()
Dim oXMLHTTP As Object
On Error Resume Next
Debug.Print "начало"
Set oXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
With oXMLHTTP
.Open "GET", "https://api.livecoin.net/exchange/ticker", False
'.Open "GET", "http://ua.julla-mama.com/category/shorti-kapri/holli/", False
.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.137 YaBrowser/17.4.1.955 Yowser/2.5 Safari/537.36"
.SetRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
.SetRequestHeader "Accept-Encoding", "gzip , deflate, sdch, br"
.SetRequestHeader "Accept-Language", "uk,ru;q=0.8,en;q=0.6"
.SetRequestHeader "Cache-Control", "Max -age = 0"
.SetRequestHeader "Connection", "keep-alive"
.SetRequestHeader "Host", "api.livecoin.net"
.SetRequestHeader "Upgrade-Insecure-Requests", "1"
.SetOption 2, .GetOption(2) - SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS
.Send
If Err.Number <> 0 Then
Debug.Print "Error: №" & Err.Number & " - " & Err.Description
Exit Sub
End If
Debug.Print "Status: " & .Status
Debug.Print "Ответ: " & .ResponseText
Debug.Print "конец"
End With
Set oXMLHTTP = Nothing
End Sub
Заголовки списал из браузера. обеспечение (win xp 32, excel 2010) Может есть идеи куда смотреть, что читать.
Только уберите строку .SetRequestHeader "Accept-Encoding", "gzip , deflate, sdch, br" она лишняя (ответ придет закодированным) Да и вообще, для этого сайта, заголовки запроса передавать необязательно (и так всё работает)
Проблема с HTTPS есть на некоторых компах (процентов 5-10 компов), - именно, что только некоторые соединения по HTTPS блокируются (не удаётся прогрузить данные) Где что поменять в настройках windows - не знаю, - может, более опытные коллеги подскажут. (давно ищу решение, пока не нашел)
У меня Ваш код отрабатывает. А если так сделать? Не одно и тоже получится?
Код
Public Sub ВПУТЬ()
Dim xmlhttp As New MSXML2.XMLHTTP60, myurl As String
myurl = "https://api.livecoin.net/exchange/ticker"
xmlhttp.Open "GET", myurl, False
xmlhttp.Send
Debug.Print "Status: " & xmlhttp.Status
Debug.Print "Ответ: " & xmlhttp.responseText
Debug.Print "конец"
End Sub
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. А в том, чтобы писать программы, работающие при любом количестве ошибок.
pton, сайт использует TLS протокол безопасности. И судя по данным:
Цитата
For systems running Windows XP, there is no upgrade or security patch available to resolve the issue. These systems will require a migration to a different OS in order to comply.
ваша система не может обработать запрос. Решения особо не искал, да и тестировать не на чем. Попробуйте поискать патчи на эту тему. И, не пора ли переходить на версию посвежее?
Да. Вы были правы. Это в системе. XP может поддерживать только TLS 1.0 описано здесь Если сервер требует протокол выше, то это не к xp А браузеры имеют свои библиотеки поддержки. Кроме IE конечно а используемый мной MSXML2.XMLHTTP60 соответственно подгружает системные
Ну Вот и пора менять систему. А мне здесь привычно.