Muchas de las aplicaciones que se crean para dispositivos móviles y tablets requieren acceso a internet para sus procesos de sincronización, visualización, entre otros.
Esta comprobación se puede hacer en pocas lineas con la siguiente función:
“public static bool HayConexion
{
get
{
var prof = NetworkInformation.GetInternetConnectionProfile();
return (prof != null && prof.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess);
}
}”
Sin embargo, esta función puede tener un pequeño inconveniente cuando estamos conectados a una red con internet, pero tenemos algún inconveniente de configuración (ejemplo, un proxy mal configurado). Detalles como éste pueden hacer que, aunque la función indique que si hay acceso a internet, no se pueda realizar una navegación.
Esto podemos mitigarlo con una sencilla petición a una pagina web (a través de un web request) y verificar el estado de la respuesta.
“private static bool VerificarAccesoAInternet()
{
HttpWebRequest webrequest;
HttpWebResponse webResponse = null;
Uri url = new Uri(“http://www.google.com.co”);
webrequest = (HttpWebRequest)WebRequest.Create(url);
try
{
webResponse = (HttpWebResponse)webrequest.GetResponseAsync().Result;
webrequest.Abort();
return true;
}
catch
{
webrequest.Abort();
return false;
}
}“
Si complementamos el primer método podría quedar de la siguiente forma:
“public static bool HayConexion
{
get
{
var prof = NetworkInformation.GetInternetConnectionProfile();
if (prof != null && prof.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess)
{
return VerificarAccesoAInternet();
}
return false;
}
}”