【问题标题】:Web Request through Proxy using RestSharp使用 RestSharp 通过代理的 Web 请求
【发布时间】:2012-08-16 13:53:27
【问题描述】:

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

【问题讨论】:

    标签: windows-phone-7 restsharp


    【解决方案1】:

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

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

    (更多信息 - MSDN - defaultProxy Element (Network Settings)

    【讨论】:

    【解决方案2】:

    对于来自 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 设置代理。

    【讨论】:

    • 我已经根据 Stefano 尝试了上述方法(将 webProxy 与 restSharp 的 restClient 一起使用 - 不断出现代理连接问题)。相反,我最终放弃了它,只是通过添加以下内容来编辑我的 app.config:&lt;system.net&gt; &lt;defaultProxy&gt; &lt;proxy autoDetect="False" bypassonlocal="True" proxyaddress="http://myproxy.domain.com:8080" usesystemdefault="False" /&gt; &lt;/defaultProxy&gt; &lt;/system.net&gt; 从 SO C# Connecting Through Proxy 上的这篇文章中收到了这个想法。
    • 我知道这并不能直接回答 win 7 原始问题,但我想我会分享一下,以防其他 restSharp 用户正在为 webProxy 问题而苦苦挣扎。
    • 有谁知道如何在 RestSharp v107 中做到这一点?我以前在 v106 上使用过它,但在 v107 上它告诉我 client.Proxy 无效。我打算降级到 v106,但我发现它有一个已知漏洞。
    • @Caverman 在下面查看我的答案。 stackoverflow.com/a/71271696/8644294
    【解决方案3】:

    这对我有用。

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

    【讨论】:

      【解决方案4】:

      一些使用方法和类的例子: 来电:

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

      【讨论】:

        【解决方案5】:

        在 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

        【讨论】:

          猜你喜欢
          • 2015-10-16
          • 1970-01-01
          • 2022-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多