Что мне нужно
- Возможность несколько раз попасть в конечную точку на моем веб-сервере за один вызов моей подпрограммы
- Каждый http-вызов выполняется асинхронно.
- Каждый http-вызов выполняется без кэширования/обходных путей очистки кеша, которые заполняют мой кеш.
- Каждый HTTP-вызов не замедляется намного по сравнению с обычным HTTP-вызовом.
Что я пробовал
Учитывая проблемы кэширования с MSXML2.XMLHTTP60
и проблемы с MSXML2.ServerXMLHTTP
в корпоративных сетях, я использую WinHttp.WinHttpRequest.5.1
.
У меня есть этот код:
Sub winhttp_test()
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "http://localhost:6969/test/winhttp_1", True
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.setRequestHeader "Cache-Control", "max-age=0"
http.send
'Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "http://localhost:6969/test/winhttp_2", True
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.setRequestHeader "Cache-Control", "max-age=0"
http.send
MsgBox "done"
End Sub
Мой сервер никогда не увидит первый запрос (даже если я раскомментирую закомментированную строку).
Если я уберу вызов MsgBox
, мой сервер не увидит ни одного запроса. Это похоже на то, что отправка не будет работать, если объект будет уничтожен сразу после вызова.
Если я использую ServerXMLHTTP
на машине без проблем с сетью, я получаю ту же проблему.
(примечание: /test
- это путь к конечной точке. Таким образом, оба вызова попадают в одну и ту же конечную точку, но с другим параметром URL-адреса. Вместо этого я пытался использовать параметры GET и POST, но проблема остается той же).
Как добиться нужного мне поведения?