Flaviu Zapca
Flaviu Zapca

Reputation: 191

Web Request through Proxy using RestSharp

I'm trying to make a webrequest through a proxy on Windows phone 7. From what I can see the Compact Framework does not include the configuring of a proxy for the HttpWebRequest object. I tried using RestSharp but the RestClient also does not allow this. I've also tried configuring the Internet Options on my local machine to use a proxy, hopping that the same options will apply on my Windows Phone Emulator. That didn't work. Do you have any ideas?

Upvotes: 19

Views: 35033

Answers (6)

junkchaser
junkchaser

Reputation: 1

RestClient client = new RestClient(url);
client.Options.Proxy = new WebProxy("127.0.0.1");

Don't forget .Options.Proxy

Upvotes: -1

Ash K
Ash K

Reputation: 3631

In RestSharp v107, you can set Proxy using options object.

var options = new RestClientOptions("https://api.myorg.com") {
    Proxy = GetWebProxy() // <-- Right here.
    ThrowOnAnyError = true,
    Timeout = 1000
};
var client = new RestClient(options);

Method to return WebProxy object:

public static WebProxy GetWebProxy()
{
    var proxyUrl = "http://proxy-name.companydomain.com:9090/";
    // First create a proxy object
    var proxy = new WebProxy()
    {
        Address = new Uri(proxyUrl),
        BypassProxyOnLocal = false,
        //UseDefaultCredentials = true, // This uses: Credentials = CredentialCache.DefaultCredentials
        //*** These creds are given to the proxy server, not the web server ***
        Credentials = CredentialCache.DefaultNetworkCredentials
        //Credentials = new NetworkCredential("proxyUserName", "proxyPassword")
    };

    return proxy;
}

Reference: https://restsharp.dev/v107/#restsharp-v107

Upvotes: 7

Leandro Bardelli
Leandro Bardelli

Reputation: 11578

Some example using a method and a class: The call:

            var client = new RestClient(urlbase);
            if(myConfigInstance.ProxyActive) {
                 client.Proxy = GetWebProxy(myConfigInstance);
            }

and the method:

  public static WebProxy GetWebProxy(ProxySettings proxySettings)
    {
        WebProxy proxy;
        try
        {
            proxy = new WebProxy(proxySettings.Server, Int32.Parse(proxySettings.Port))
            {
                Credentials = new NetworkCredential(proxySettings.Username, proxySettings.Password, proxySettings.Domain)
            };
        }
        catch (Exception ex)
        {
          throw new Exception("Error");
        }
        return proxy;
    }

and the class:

public class ProxySettings
{
    public bool ProxyActive { get; set; }
    public string Port { get; set; }
    public string Server { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string Domain { get; set; }
}

Upvotes: 2

Israel Margulies
Israel Margulies

Reputation: 8952

Under "configuration" section in Web.config add this:

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true"></defaultProxy>
</system.net>

(for more more info - MSDN - defaultProxy Element (Network Settings))

Upvotes: 24

Lucius Kaye
Lucius Kaye

Reputation: 91

This worked for me.

String url = "some url";

IWebProxy proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = CredentialCache.DefaultCredentials;
RestClient client = new RestClient(url);
{
Proxy = proxy,
};

Upvotes: 4

Stefano Ricciardi
Stefano Ricciardi

Reputation: 2973

For people coming from Google looking how to set a proxy with RestSharp, if you are not on Windows Phone, at least as of version 104.4.0 you can do the following:

var client = new RestClient("http://example.com")
client.Proxy = new WebProxy("http://proxy.example.com")

Don't know whether this would work on Windows Phone since I am not familiar with the framework there; since the title of the question did not contain Windows Phone I thought that many like myself would end up here, just searching about how to setup the proxy with RestSharp.

Upvotes: 22

Related Questions