У меня есть код, который отлично работает, когда у меня есть прокси-сервер, определенный в Internet Explorer. Однако, если он не определен, он не работает. Я хочу проверить, определен ли прокси-сервер. Как я могу изменить приведенный ниже код для этого?Как проверить, настроен ли прокси-сервер?
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
на если заявление линии.
UPDATE 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
Знаете ли вы, что WebProxy.GetDefaultProxy() считается устаревшим? Вместо этого вы должны использовать WebRequest.GetSystemWebProxy() или WebRequest.DefaultWebProxy. –
Я обновил свой вопрос, чтобы использовать 'GetSystemWebProxy'. Все еще имея проблемы, не могли бы вы взглянуть? –