Обновление: решено -> Смотрите ответ ниже.
Обновление:
В документации Microsoft я вижу, что когда метод open вызывается с Async = false, ответ может не возвращаться, если «истекло время ожидания стека протоколов», однако я не смог прочитать таймеры тайм-аута.
https://docs.microsoft.com/en-us/previous-versions/windows/embedded/ms931177%28v%3dmsdn.10%29
Не совсем уверен, связано это или нет.
Я пытаюсь получить объект ответа JSON через API запросов VersionOne.
Когда я пытаюсь прочитать responseText в VBA, я получаю пустой массив, однако точно такой же запрос возвращает правильные данные из PostMan. Я получаю ответ с кодом HTTP 200, но в теле ответа нет данных.
Причина, по которой это делается в VBA и Excel, заключается в том, что данные необходимо анализировать в уже существующей модели Excel.
Я пробовал разные варианты аутентификации, как OAUTH, так и Basic.
Это код VBA
Option Explicit
Sub Test_LateBinding()
Dim objRequest As Object
Dim strUrl As String
Dim strResponse As String
Dim body As String
Dim strResponseHeaders As String
Dim allResponseHeader As String
Set objRequest = CreateObject("MSXML2.XMLHTTP")
strUrl = "https://endpoint"
body = " { ""from"": ""Epic"",""select"": []}"
'with basic'
With objRequest
.Open "GET", strUrl, False, "XXXX", "XXXX"
.SetRequestHeader "Content-Type", "application/json"
.Send body
strResponseHeaders = .StatusText
strResponse = .ResponseText
allResponseHeader = .GetAllResponseHeaders
End With
Debug.Print body
Debug.Print allResponseHeader
Debug.Print strResponse
End Sub
Это вывод моей консоли:
OK
Content-Type: application/json; charset=utf-8
Content-Length: 2
X-Content-Type-Options: nosniff
V1-MemberID: skatteministeriet/120267
Strict-Transport-Security: max-age=31536000; includeSubdomains
X-Robots-Tag: noindex
VersionOne: Ultimate/19.0.3.29; 0
X-Instart-Request-ID: 3912039762705832388:SEN01-NPPRY25:1553377406:0
[]
Это заголовки ответа PostMan :
Заголовки ответов PostMan
Это URL и тело запроса JSON:
URL и тело запроса