Вы можете добавить инструкцию, чтобы избежать обслуживания кэшированных результатов (сервер может игнорировать это, но в прошлом я имел хороший успех).Убедитесь, что ваш асинхронный аргумент всегда равен False, и оставьте больше времени между тестами.Я замечаю, что иногда цены меняются медленно, поэтому вы можете пропустить изменение из-за слишком малого интервала или недостаточного количества попыток.Вы заметите изменение size
.Вы должны добавить максимальное время ожидания к циклу в нижнем скрипте.
Также удалены венгерские обозначения.
Option Explicit
Public Sub getJsonResult()
Dim http As Object
Dim urlXBTUSD As String
Dim response As String
Dim j As Long
Const ASYNC_ARG As Boolean = False
Set http = CreateObject("MSXML2.XMLHTTP")
For j = 1 To 10
response = vbNullString
urlXBTUSD = "https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBTUSD&depth=3"
ThisWorkbook.Activate
With http
.Open "GET", urlXBTUSD, ASYNC_ARG
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send
response = .responseText
Debug.Print response
End With
Application.Wait Now + TimeSerial(0, 0, 15)
Next
End Sub
Это длинный и утомительныйспособ доказать это путем зацикливания до тех пор, пока не изменится цена первого товара в коллекции.Я использую jsonconverter.bas , добавленный в проект, и VBE> Инструменты> Ссылки> Справочник по времени выполнения сценариев Microsoft.
Option Explicit
Public Sub getJsonResult()
Dim http As Object
Dim urlXBTUSD As String
Dim response As String
Dim j As Long
Const ASYNC_ARG As Boolean = False
Dim price As String, firstValue As String
Set http = CreateObject("MSXML2.XMLHTTP")
urlXBTUSD = "https://www.bitmex.com/api/v1/orderBook/L2?symbol=XBTUSD&depth=3"
ThisWorkbook.Activate
With http
.Open "GET", urlXBTUSD, ASYNC_ARG
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send
firstValue = JsonConverter.ParseJson(.responseText)(1)("price")
Debug.Print firstValue
Do
.Open "GET", urlXBTUSD, blnAsync
.setRequestHeader "Content-Type", "application/json"
.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
.send
price = JsonConverter.ParseJson(.responseText)(1)("price")
Application.Wait Now + TimeSerial(0, 0, 5)
Loop While price = firstValue
Debug.Print price
End With
End Sub