Powershell – získání výstupu z webové služby s ověřením v aplikaci

/*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

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *