使用下面的简单代码,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代理。
答案 0 :(得分:4)
我找到了答案:
client.Proxy = new WebProxy(myProxyUrl);
client.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
所以它不能简单地从Windows设置中读取代理URL,例如HttpWebRequest。您必须提供代理网址。