/*Nejprve si pohrajeme s odchytáním komunikace na webovou službu např pomocí prográmku Fiddler ( proxy) abychom získali potřebné infomace o URL
Nejprve získáme pověření buď pomocí Get-Credential nebo z uloženého pověření v souboru popř pomocí System.Net.NetworkCredential*/
$cred = Get-Credential
$global:credNet=$cred.GetNetworkCredential()
#$global:credNet = New-Object System.Net.NetworkCredential -argumentlist $user,$P
$CookieContainer = New-Object System.Net.CookieContainer
$global:myCache = new-object system.net.CredentialCache $global:WEBSRV=new-object system.uri("https://xxx.example.cz/xxx/websrv.aspx") $global:WEBSRVb=new-object system.uri("https://xxx.example.cz") # do cache uložíme ověření pro NTLM $global:myCache.add($WEBSRVb,"NTLM",$credNet) $LOGIN="//https://xxx.example.cz/xxx/login.aspx?ReturnUrl=/xxx/import.aspx"
# vytvoříme požadavek pro přihlášení [net.httpWebRequest] $global:req = [net.webRequest]::create($LOGIN) $global:req.AllowAutoRedirect = $false # to zrušení přesmerování je nutné $global:req.KeepAlive = $true $global:req.CookieContainer = $CookieContainer # nastavíme si odkud se budou brát Credentials $global:req.Credentials =$global:myCache $global:req.TimeOut = 50000 $global:req.Headers.Add("Keep-Alive: 300");
# požádáme o odpověď - responze (login.aspx) # hlavně nám vrátí potřebné cookies< [net.httpWebResponse] $global:res = $req.getResponse()
# nyní zkusíme zavolat vlastní službu [net.httpWebRequest] $global:req2 = [net.webRequest]::create($WEBSRV) # předáme potřebné Cookie a pověření $global:req2.CookieContainer = $CookieContainer $global:req2.Credentials =$global:myCache $req2.Headers.Add("Cookie", $global:res.Headers["Set-Cookie"]) # a provedeme vlastní zavolání služby [net.httpWebResponse] $global:res2 = $req2.getResponse()
#po uspěšném dokončení si přečteme co nám služba vrátila
$data=$res2.GetResponseStream()
$reader=New-Object System.IO.StreamReader($data) $Obsah=$reader.ReadToEnd() # celá data - HTML $reader.close() $data.close() $Obsah > "./data.html" # uložíme si do souboru