Ik probeer via PowerShell enkele calls te maken naar een webapp en gebruikte hier in eerste instantie een Invoke-WebRequest voor. Alleen vereist de app op een gegeven moment dat er een array parameter wordt gebruikt en Invoke-WebRequest staat niet toe dat je in je call meerdere parameters met dezelfde naam gebruikt. Ik ben dan op zoek gegaan naar een alternatief en kwam op Stack Exchange een stukje code tegen dat deze mogelijkheid wel biedt en gebruik maakt van System.Net.HttpWebRequest
De web app maakt gebruik van NTLM credentials en ik kan dus aan beide de optie meegeven om de defaultcredentials te gebruiken. Maar van zodra ik bij de HttpWebRequest de body meegeef dan krijg ik van de server een "401 Unauthorized" terug
De web app maakt gebruik van NTLM credentials en ik kan dus aan beide de optie meegeven om de defaultcredentials te gebruiken. Maar van zodra ik bij de HttpWebRequest de body meegeef dan krijg ik van de server een "401 Unauthorized" terug
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| $req = [System.Net.HttpWebRequest]::Create($Uri) $req.UseDefaultCredentials = $true $req.KeepAlive = $false $req.Method = "POST" $req.ContentLength = $params.Length $req.ContentType = "application/x-www-form-urlencoded" $str = $req.GetRequestStream(); $str.Write($b, 0, $b.Length); $str.Close(); $str.Dispose(); [System.Net.HttpWebResponse] $res = $req.GetResponse(); $str = $res.GetResponseStream(); $rdr = New-Object -TypeName "System.IO.StreamReader" -ArgumentList ($str); $content = $rdr.ReadToEnd();Z $str.Close(); $str.Dispose(); $rdr.Dispose(); |
Als ik tijdens het testen na lijn 4 reeds een GetResponse vraag krijg ik netjes een correct antwoord van de server. Maar van zodra ik met de content begin te spelen wordt het een 401. Ik krijg via Google niet direct een antwoord gevonden van het waarom. Ik heb er ook over nagedacht om een externe tool te gebruiken zoals curl, maar deze wordt geblokkeerd door de beveiligingsinstellingen op de computer, daarnaast zou ik het ook liever in PS houden.Exception calling "GetResponse" with "0" argument(s): "The remote server returned an error: (401) Unauthorized."
No keyboard detected. Press F1 to continue.