powershell httpwebrequest GET method cookiecontainer problem? powershell httpwebrequest GET method cookiecontainer problem? powershell powershell

powershell httpwebrequest GET method cookiecontainer problem?


I found that since cookies can have additional information attached (like the URL or HTTP-only), the $res.Headers["Set-Cookie"] didn't work for me. But using your $CookieContainer variable, you can easily change it to use GetCookieHeader(url), which will strip out the extra information and leave you with a properly formatted cookie string:

$web = new-object net.webclient$web.Headers.add("Cookie", $CookieContainer.GetCookieHeader($url))$result = $web.DownloadString($url)


People have been asking for the complete application, here you have it

$url = "https://some_url"$CookieContainer = New-Object System.Net.CookieContainer$postData = "User=UserName&Password=Pass"$buffer = [text.encoding]::ascii.getbytes($postData)[net.httpWebRequest] $req = [net.webRequest]::create($url)$req.method = "POST"$req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"$req.Headers.Add("Accept-Language: en-US")$req.Headers.Add("Accept-Encoding: gzip,deflate")$req.Headers.Add("Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7")$req.AllowAutoRedirect = $false$req.ContentType = "application/x-www-form-urlencoded"$req.ContentLength = $buffer.length$req.TimeOut = 50000$req.KeepAlive = $true$req.Headers.Add("Keep-Alive: 300");$req.CookieContainer = $CookieContainer$reqst = $req.getRequestStream()$reqst.write($buffer, 0, $buffer.length)$reqst.flush()$reqst.close()[net.httpWebResponse] $res = $req.getResponse()$resst = $res.getResponseStream()$sr = new-object IO.StreamReader($resst)$result = $sr.ReadToEnd()$res.close()$web = new-object net.webclient$web.Headers.add("Cookie", $res.Headers["Set-Cookie"])$result = $web.DownloadString("https://secure_url")


I would use IE automation. With this don't have to work with cookies, headers etc. Much easier.