我有一些运行良好的代码,当我在Internet Explorer中定义了一个Web代理时。但是,如果没有定义它不起作用。我想检查一个代理是否被定义。我将如何更改下面的代码来做到这一点?如何检查代理服务器是否配置?
public DataTable GetCurrentFxPrices(string url)
{
WebProxy wp = new WebProxy(WebProxy.GetDefaultProxy().Address.AbsoluteUri, true);
wp.Credentials = CredentialCache.DefaultCredentials;
WebClient wc = new WebClient();
wc.Proxy = wp;
MemoryStream ms = new MemoryStream(wc.DownloadData(url));
DataSet ds = new DataSet("fxPrices");
ds.ReadXml(ms);
DataTable dt = ds.Tables["Rate"];
int i = dt.Rows.Count;
return dt;
}
例如,如何在不使用代理的情况下下载数据?
UPDATE
我已经改变了代码以下
public DataTable GetCurrentFxPrices(string url)
{
WebClient wc = new WebClient();
if (!String.IsNullOrEmpty(WebProxy.GetDefaultProxy().Address.AbsoluteUri))
{
WebProxy wp = new WebProxy(WebProxy.GetDefaultProxy().Address.AbsoluteUri, true);
wp.Credentials = CredentialCache.DefaultCredentials;
wc.Proxy = wp;
}
MemoryStream ms = new MemoryStream(wc.DownloadData(url));
DataSet ds = new DataSet("fxPrices");
ds.ReadXml(ms);
DataTable dt = ds.Tables["Rate"];
int i = dt.Rows.Count;
return dt;
}
我收到以下错误System.NullReferenceException was unhandled by user code
的if语句行。
更新2
我也试着改变这一行:
if (!String.IsNullOrEmpty(WebProxy.GetDefaultProxy().Address.AbsoluteUri))
到
if (WebProxy.GetDefaultProxy().Address.AbsoluteUri != null)
,但我得到这个错误:
System.NullReferenceException: Object reference not set to an instance of an object.
任何想法?
没有代理:会省略`wc.Proxy = wp;`做窍门吗? (“如果没有代理,请不要设置它”) – Piskvor 2011-02-04 13:15:59
您知道WebProxy.GetDefaultProxy()被认为已过时吗?您应该改用WebRequest.GetSystemWebProxy()或WebRequest.DefaultWebProxy。 – 2011-02-04 13:47:38
我更新了我的问题以使用`GetSystemWebProxy`。仍然有麻烦,你能看看吗? – 2011-02-09 15:00:50