17

我正在尝试通过 Windows phone 7 上的代理发出 Web 请求。据我所知,Compact Framework 不包括为 HttpWebRequest 对象配置代理。我尝试使用 RestSharp 但 RestClient 也不允许这样做。我还尝试在本地计算机上配置 Internet 选项以使用代理,希望相同的选项将应用于我的 Windows Phone 模拟器。那没有用。你有什么想法?

4

5 回答 5

22

在 Web.config 的“配置”部分下添加:

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

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

于 2012-11-06T16:52:06.533 回答
20

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

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

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

于 2014-05-20T09:28:25.533 回答
4

这对我有用。

String url = "some url";

IWebProxy proxy = WebRequest.DefaultWebProxy;
proxy.Credentials = CredentialCache.DefaultCredentials;
RestClient client = new RestClient(url);
{
Proxy = proxy,
};
于 2019-06-14T16:16:09.060 回答
1

使用方法和类的一些示例:调用:

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

和方法:

  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;
    }

和班级:

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; }
}
于 2019-08-07T17:48:11.123 回答
0

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

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

返回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;
}

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

于 2022-02-25T21:02:13.273 回答