I have basic authentatication working with REST API using curl:
curl -X POST -H 'Accept: application/json' -u user:password http://localhost/test/ But, when I try to do the same with powershell webRequest, I get 403(permission denied). This script works fine when I disable authentication check in REST code.
What is the best way in powershell to pass credentials on POST request similar to curl or what can I do to fix following script.
Would really appreciate some guidance on this. Thanks.
Here is my powershell script:
function Execute-HTTPPostCommand() { param( [string] $target = $null ) $username = "user" $password = "pass" $webRequest = [System.Net.WebRequest]::Create($target) $webRequest.ContentType = "text/html" $PostStr = [System.Text.Encoding]::UTF8.GetBytes($Post) $webrequest.ContentLength = $PostStr.Length $webRequest.ServicePoint.Expect100Continue = $false $webRequest.Credentials = New-Object System.Net.NetworkCredential -ArgumentList $username, $password $webRequest.PreAuthenticate = $true $webRequest.Method = "POST" $requestStream = $webRequest.GetRequestStream() $requestStream.Write($PostStr, 0,$PostStr.length) v$requestStream.Close() [System.Net.WebResponse] $resp = $webRequest.GetResponse(); $rs = $resp.GetResponseStream(); [System.IO.StreamReader] $sr = New-Object System.IO.StreamReader -argumentList $rs; [string] $results = $sr.ReadToEnd(); return $results; } $post = "volume=6001F930010310000195000200000000&arrayendpoint=2000001F930010A4&hostendpoint=100000051ED4469C&lun=2" $URL = "http://example.com/test/" Execute-HTTPPostCommand $URL