我为WebClient对象设置了Proxy属性:
WebProxy wp = new WebProxy("proxy server url and credentials here");
webClient.Proxy = wp;
如何从现有WebClient对象获取主机,端口,用户名,密码等代理信息作为字符串?
例如:
var test =
webClient.Proxy as WebProxy;
var test2 = test.Address;
var test3 = webClient.Proxy.Credentials as NetworkCredential;
var test4 = test3.UserName;
var test5 = test3.Password;
但这不起作用,因为我从Proxy和Proxy.Credentials获取的对象为null。 我如何简单地获取这些信息?
答案 0 :(得分:0)
代理Uri是上下文绑定,对于不同的原始请求,代理配置可以提供不同的代理Uris。要获得实际的代理Uri(主机,端口,协议1等),您必须提供原始的Uri
Uri proxyUri = yourWebClient.Proxy.GetProxy(new Uri(originalRequestUrl))
或
Uri proxyUri = yourWebClient.Proxy.GetProxy(originalRequestUri)
然后您可以使用proxyUri变量的属性,如主机,端口等。
注意:如果您取回原始的Uri,则意味着:没有代理有效。
如果提供原始请求Uri对您来说是一个问题,和您确定所有Uris的代理是相同的,那么ypi cam只提供一个愚蠢(但有效)的uri(尽管这是一个丑陋的解决方案),如:
Uri proxyUri = yourWebClient.Proxy.GetProxy(new Uri("http://www.google.com"))
显然,这不会导致www.google.com的流量,只需获取代理配置。
关于凭据相同的故事:
NetworkCredential credential = yourWebClient.Proxy.Credentials.GetCredential(...)
通过凭证变量,您可以获得Domain,UserName和Password *属性。
(*仅供记录:不建议使用记录密码)