How can I make Invoke-RestMethod use the default web proxy?
powershell, rest
Solution
Edit: Once incorrect address is provided the command no longer works and returns the address provided instead of the proxy address.. Do not use this: Using the code snippet in this, I am able to retrieve the proxy uri from PowerShell as such:
[System.Net.WebRequest]::DefaultWebProxy.GetProxy([uri]("http://www.google.com"))
Use this instead:
[System.Net.WebRequest]::GetSystemWebProxy().GetProxy("http://www.google.com")
It still returns the provided URI (or throws) when the uri is invalid, but once correct uri is provided is starts working again.
Problem
The following works fine on my machine which does not use a web proxy. ``` return Invoke-RestMethod -Uri $server$url -ContentType $contentType -Headers $headers -Method $method -UseDefaultCredentials ``` Note: the `$server$url` is an https address, something like https://somewhere.example.com/api/data Now I'm trying to get it to work in a corporate environment but I am getting a 401 error. I think this is because there is a corporate proxy which is defined with a proxy.pac file. I have confirmed I can get to the `$server$url` URI from Internet Explorer. What do I need to do to get the `Invoke-RestMethod` command to work using the same settings? I have tried adding the `-proxy` parameter ``` $proxy = [System.Net.WebRequest]::GetSystemWebProxy() $proxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials return Invoke-RestMethod -Uri $server$url -ContentType $contentType -Headers $headers -Method $method -UseDefaultCredentials -Proxy $proxy -ProxyUseDefaultCredentials ``` but the -Proxy parameter is expecting a URI not an `IWebProxy` object.