使用RestSharp通过代理进行Web请求

Fla*_*pca 12 windows-phone-7 restsharp

我试图通过Windows手机7上的代理从我可以看到Compact Framework不包括用于HttpWebRequest对象代理的配置做出的WebRequest.我尝试使用RestSharp,但RestClient也不允许这样做.我还尝试在我的本地计算机上配置Internet选项以使用代理,跳转到我的Windows Phone模拟器上将应用相同的选项.那没用.你有什么想法?

Isr*_*ies 18

我花了差不多50个小时才发现问题,在网上找不到这个简单的解决方案.

在Web.config中的"配置"部分下添加:

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true"></defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)

然后就像一个魅力!

(有关更多信息 - MSDN - defaultProxy元素(网络设置))


Ste*_*rdi 16

对于来自Google的人来说,如何使用RestSharp设置代理,如果您不在Windows Phone上,至少从版本104.4.0开始,您可以执行以下操作:

var client = new RestClient("http://example.com")
client.Proxy = new WebProxy("http://proxy.example.com")
Run Code Online (Sandbox Code Playgroud)

不知道这是否适用于Windows Phone,因为我不熟悉那里的框架; 由于问题的标题不包含Windows Phone,我认为很多像我这样的人会在这里结束,只是搜索如何使用RestSharp设置代理.


Ash*_*h K 6

在 RestSharp v107 中,您可以使用选项对象设置代理。

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

返回WebProxy对象的方法:

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;
}
Run Code Online (Sandbox Code Playgroud)

参考:https://restsharp.dev/v107/#restsharp-v107