RestSharp并不尊重RestRequest请求.Credentials - 无法通过http代理

时间:2017-05-05 20:30:46

标签: c# restsharp http-proxy

使用下面的简单代码,RestClient无法通过Web代理。它没有尊重request.Credentials

的价值

我可以访问我试图在浏览器中查询的网站;但RestClient被我公司的代理人阻止。

try
{
    RestClient client = new RestClient("http://services.groupkt.com/country/get/all");
    RestRequest request = new RestRequest(Method.POST);

    //set credentials to default
    request.Credentials = System.Net.CredentialCache.DefaultCredentials;

    //also tried using client.UserAgent to spoof Firefox user-agent to no avail

    request.AddHeader("cache-control", "no-cache");
    request.AddHeader("content-type", "application/x-www-form-urlencoded");

    IRestResponse response = client.Execute(request);
    textBox1.Text = response.Content;
}
catch (Exception ex)
{
    textBox1.Text = "ERROR:" + ex.Message;
}

所以我在textBox1中最终得到的是呈现为:

的html
  

仅授权

     

Secure Web Gateway已阻止您的请求,因为您还没有   需要授权和授权。

     

URL:

     

用户名/来源:/ 10.xx.xx.xx

     

规则集:使用Kerberos和NTLM后备/身份验证进行身份验证

     

使用Kerberos(不评估NTLM令牌)

     

重要提示:当您访问互联网网页时,您应遵守[公司名称]互联网过滤的授权批准。

     

生成2017-05-05 15:04:08

     

RestSharp 104.1.0.0

换句话说,RestSharp不会像我们想要的那样将默认凭据传输到Web代理。

1 个答案:

答案 0 :(得分:4)

我找到了答案:

        client.Proxy = new WebProxy(myProxyUrl);
        client.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

所以它不能简单地从Windows设置中读取代理URL,例如HttpWebRequest。您必须提供代理网址。