我正在尝试在 VBA 中发送 HTTP GET 请求,其中包含一个包含冒号字符的 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
, or MSXML2.ServerXMLHTTP60
,但是在 cookie 值中包含冒号时,使用任何这些对象都会导致以下错误。
我尝试用以下内容替换冒号Chr(58)
, %3A
,并且字符串内的双引号无效。我还尝试添加具有各种字符编码的“Content-Type”标头,但这似乎也不起作用。
任何人都知道我如何使用以下命令发送包含冒号的 cookie 值Winhttp.WinHttpRequest
, MSXML2.ServerXMLHTTP40
, or MSXML2.ServerXMLHTTP60
物体?
PS:或者,如果有人知道我如何在使用时获取重定向序列的结束 URLMSXML2.ServerXMLHTTP
,那也可以!Winhttp.WinHttpRequest
允许我捕获 302 状态代码,并且MSXML2.ServerXMLHTTP40
or MSXML2.ServerXMLHTTP60
会让我使用GetOption(-1)
, but MSXML2.ServerXMLHTTP
不支持这两种方法(据我所知)。