2013-06-29 2 views
4

내가 지금처럼 콜론 문자가 포함 된 쿠키가 포함 VBA에서 HTTP GET 요청 보내려고하고있다 : 나는 objReq에 사용하는 어떤 객체 유형에 따라VBA HTTP GET 요청 - 콜론 쿠키

objReq.Open "GET", "http://my.url.com?foo=bar", False 
objReq.setRequestHeader "Cookie", "abcd=cookie:containing:colons" 
objReq.Send 

을 그러나 요청은 다르게 처리됩니다.

다음 객체 유형은 작동합니다

Dim objReq As MSXML2.ServerXMLHTTP 
Set objReq = New MSXML2.ServerXMLHTTP 

불행하게도, 나는 (HTTP 리디렉션에 대한 MSXML2.ServerXMLHTTP 충분한 세부 사항을 캡처 할 수 없기 때문에) 다른 오브젝트 유형을 사용해야합니다. 읽은 내용 중에서 Winhttp.WinHttpRequest, MSXML2.ServerXMLHTTP40 또는 MSXML2.ServerXMLHTTP60을 사용해야하지만 쿠키 값에 콜론을 포함하면 이러한 개체를 사용하면 다음과 같은 오류가 발생합니다.

enter image description here

내가 Chr(58), %3A와 콜론을 교체했는데, 아무 소용이 문자열 내에서 이중 인용했다. 나는 또한 다양한 문자 인코딩과 함께 'Content-Type'헤더를 추가하려고 시도했지만, 그 중 하나가 작동하지 않는 것 같습니다.

누구나 Winhttp.WinHttpRequest, MSXML2.ServerXMLHTTP40 또는 MSXML2.ServerXMLHTTP60 개체를 사용하여 콜론을 포함하는 쿠키 값을 보낼 수 있습니다.



PS : 또는 사람이 MSXML2.ServerXMLHTTP를 사용할 때 나는 잘 작동하는, 리디렉션 시퀀스의 끝 URL을 얻을 수있는 방법을 알고 있다면! Winhttp.WinHttpRequest을 입력하면 302 상태 코드를 캡처 할 수 있으며 MSXML2.ServerXMLHTTP40 또는 MSXML2.ServerXMLHTTP60을 사용하면 GetOption(-1)을 사용할 수 있지만 MSXML2.ServerXMLHTTP은 (내가 알 수있는 것)이 방법 중 하나를 지원하지 않습니다.

답변

1

내가 WinHttpRequest과 테스트의 비트를했고, 나는 다음과 같은 코드를 내놓았다 :

Dim objReq As WinHttp.WinHttpRequest 
Set objReq = New WinHttp.WinHttpRequest 
objReq.Option(WinHttpRequestOption_EnableRedirects) = True 
objReq.Open "GET", "http://www.example.com", False 
objReq.setRequestHeader "Cookie", "abcd=cookie:containing:colons" 
objReq.send 

내가했던 내가 내가 "HTTP를 포함하는 것을 잊었다 때 게시 된 같은 오류가있어주의 : // "URL에.

도움이 되었기를 바랍니다.