如何从WebClient对象获取代理信息
本文关键字:获取 代理 信息 对象 WebClient | 更新日期: 2023-09-27 18:19:42
我为WebClient对象设置了Proxy属性:
WebProxy wp = new WebProxy("proxy server url and credentials here");
webClient.Proxy = wp;
如何以字符串形式从现有WebClient对象中获取Host、Port、Username、Password等代理信息?
例如:
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。我如何简单地获取这些信息?
代理Uri是上下文绑定,换句话说,对于不同的原始请求,代理配置可以提供不同的代理Uri。要获得实际的代理Uri(主机、端口、协议等),必须提供原始的Uri
Uri proxyUri = yourWebClient.Proxy.GetProxy(new Uri(originalRequestUrl))
或
Uri proxyUri = yourWebClient.Proxy.GetProxy(originalRequestUri)
然后您可以使用proxyUri变量的属性,如Host、Port等。
注意:如果返回原始Uri,则意味着:没有有效的代理
如果提供原始请求Uri对您来说是个问题,和您确定所有Uri的代理都是相同的,那么ypi-cam只需提供一个dummy(但有效)Uri(尽管这是一个丑陋的解决方案),如:
Uri proxyUri = yourWebClient.Proxy.GetProxy(new Uri("http://www.google.com"))
显然,这不会导致www.google.com的流量,只会得到代理配置。
关于凭据相同的故事:
NetworkCredential credential = yourWebClient.Proxy.Credentials.GetCredential(...)
通过凭据变量,您可以获得Domain、UserName和Password*属性。
(*仅供记录:不建议使用登录密码)