У меня есть надстройка Excel, созданная с использованием VBA, и один из моих пользователей испытывает тайм-ауты запроса при попытке публикации в моем облачном API. Я использую веб-инструменты VBA https://github.com/VBA-tools/VBA-Web для выполнения HTTP-запросов.
Dim Request As New WebRequest
Request.Resource = Resource 'my api endpoint
Request.Method = WebMethod.HttpPost
Request.Format = WebFormat.Json
Request.ResponseFormat = WebFormat.Json
Request.AddHeader "Authorization", "Bearer " & SessionKey
Client.TimeoutMs = 15000
Set Request.Body = Body 'a dictionary with user data
Dim Response As WebResponse
Set Response = Client.Execute(Request)
If Response.StatusCode <> Ok Then
Debug.Print Response.StatusCode
Debug.Print Response.StatusDescription
End If
Я попросил пользователя прислать мне свои журналы, и они выглядят так:
Response.StatusCode
Response.StatusDescription
>> 408
>> Request Timeout: The operation timed out
Первоначально я предполагал, что это проблема брандмауэра, потому что никто не сообщил об этой проблеме, кроме одной группы пользователей (расположенной в одном здании), но я попросил их перейти по URL-адресу в их интернет-браузере, и ониудалось получить ответ.
Это необычно, поскольку я установил период ожидания по умолчанию равным 15 секундам, и, тем не менее, этот ответ появляется практически сразу после выполнения запроса. Я также ожидал увидеть журналы от моего API о том, что был сделан запрос, но я не вижу ни одного (я использую AWS API Gateway).
Мне интересно, блокируется ли Excel выполнение сетевых запросов, это поведение по умолчанию на некоторых машинах Windows? Есть ли способ проверить это в VBA? Кроме того, похоже, что VBA-Web обобщает диапазон кодов состояния как 408
(https://github.com/VBA-tools/VBA-Web/blob/eb857f0dee739ff4a55cfae80b24b82418aee816/src/WebClient.cls#L345-L352), Кто-нибудь знает, почему они будут возвращены?