Я пытаюсь отправить запрос HTTP GET в VBA, который включает файл cookie, содержащий символ двоеточия, например:
objReq.Open "GET", "http://my.url.com?foo=bar", False
objReq.setRequestHeader "Cookie", "abcd=cookie:containing:colons"
objReq.Send
Однако в зависимости от того, какой тип объекта я использую для objReq
, запрос обрабатывается по-разному.
Работает следующий тип объекта:
Dim objReq As MSXML2.ServerXMLHTTP
Set objReq = New MSXML2.ServerXMLHTTP
К сожалению, мне нужно использовать другой тип объекта (поскольку MSXML2.ServerXMLHTTP
не может получить достаточно подробностей о перенаправлениях HTTP). Из того, что я прочитал, мне нужно использовать Winhttp.WinHttpRequest
, MSXML2.ServerXMLHTTP40
или MSXML2.ServerXMLHTTP60
, но использование любого из этих объектов приводит к следующей ошибке при включении двоеточий в значение cookie.
Я пытался заменить двоеточия на Chr(58)
, %3A
и двойные кавычки внутри строки, но безрезультатно. Я также пытался добавить заголовок «Content-Type» с различными кодировками символов, но это тоже не работает.
Кто-нибудь знает, как я могу отправить значение cookie, содержащее двоеточия, используя объекты Winhttp.WinHttpRequest
, MSXML2.ServerXMLHTTP40
или MSXML2.ServerXMLHTTP60
?
PS: В качестве альтернативы, если кто-нибудь знает, как я могу получить конечный URL-адрес последовательности перенаправления при использовании MSXML2.ServerXMLHTTP
, это тоже сработает! Winhttp.WinHttpRequest
позволит мне получить код состояния 302, а MSXML2.ServerXMLHTTP40
или MSXML2.ServerXMLHTTP60
позволит мне использовать GetOption(-1)
, но MSXML2.ServerXMLHTTP
не поддерживает ни один из этих методов (насколько я могу судить).