Tengo un código que funciona bien cuando tengo un proxy web definido en Internet Explorer. Sin embargo, si no hay ninguno definido, no funciona. Quiero verificar si el proxy a está definido. ¿Cómo cambiaría el código a continuación para hacer eso?¿Cómo verificar si un servidor proxy está configurado?
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;
}
Por ejemplo, ¿cómo puedo descargar los datos sin usar un proxy?
ACTUALIZACIÓN
me han cambiado el código a la siguiente
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;
}
me sale el siguiente error System.NullReferenceException was unhandled by user code
en la línea de sentencia if.
ACTUALIZACIÓN 2
También he intentado cambiar esta línea:
if (!String.IsNullOrEmpty(WebProxy.GetDefaultProxy().Address.AbsoluteUri))
a
if (WebProxy.GetDefaultProxy().Address.AbsoluteUri != null)
pero me sale este error:
System.NullReferenceException: Object reference not set to an instance of an object.
¿Alguna idea?
Sin un proxy: ¿omitiría 'wc.Proxy = wp;' hacer el truco? ("si no hay proxy, no lo configure") – Piskvor
¿Sabía que WebProxy.GetDefaultProxy() se considera obsoleto? Debería usar WebRequest.GetSystemWebProxy() o WebRequest.DefaultWebProxy en su lugar. –
He actualizado mi pregunta para usar 'GetSystemWebProxy'. Aún teniendo problemas, ¿podrías echarle un vistazo? –