Vérifier la présence d'une connexion internet actuelle
J'ai le code suivant dans une application qui permettra de vérifier la présence d'une connexion internet. Il n'travail va dire qu'il n'y est pas d'internet si il n'y a pas (contrairement à l'utilisation, ConnectivityManager qui ne dites-vous si vous êtes connecté à un routeur/3g, mais n'est pas réellement vérifier la présence d'une connexion internet), mais seulement jusqu'à ce que quelqu'un se connecte au wifi spot qui redirige l'utilisateur vers une page de connexion. L'application sera de retour de 200 code et essayer de continuer, mais elle permettra à terme de collision (et crash calme un peu). Mon appli serait principalement utilisé dans un endroit qui a un spot wifi. Comment puis-je vérifier si une demande a été redirigée?
class online extends AsyncTask<String, String, String>
{
boolean responded = false;
@Override
protected void onPreExecute()
{
super.onPreExecute();
pDialog2 = new ProgressDialog(Main.this);
pDialog2.setMessage("Checking internet, please wait...");
pDialog2.setIndeterminate(false);
pDialog2.setCancelable(false);
pDialog2.show();
}
protected String doInBackground(String... args)
{
try
{
URL url = new URL("http://mydomain.com/connectionTest.html");
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setConnectTimeout(6000); //Timeout is in seconds
urlc.setReadTimeout(6000);
urlc.connect();
if (urlc.getResponseCode() == 200)
{
responded = true;
} else
{
}
} catch (IOException e)
{
}
try
{
int waited = 0;
while (!responded && (waited < 5000))
{
mHandler.postDelayed(new Runnable()
{
public void run()
{
}
}, 100);
waited += 100;
}
}
finally
{
if (!responded)
{
h.sendEmptyMessage(0);
}
else
{
h.sendEmptyMessage(1);
}
}
return null;
}
protected void onPostExecute(String file_url)
{
pDialog2.dismiss();
}
}
Vous devez vous connecter pour publier un commentaire.
Si vous avez le contrôle sur le service web qui vous vous connectez, vous pouvez utiliser une astuce similaire à la façon dont Google pour vérifier la connexion Wi-Fi gratuite rediriger les portails.
Vous l'occasion d'une demande de sortir de
http://google.com/generate_204
. Si vous êtes derrière un public point d'accès mot de passe de page, puis vous reçoit généralement une200 Ok
à partir du serveur qui a intercepté la requête web dans le but de servir la page de connexion. Si l'utilisateur est déjà connecté vous recevrez ensuite un HTTP204 No Content
de l'état dans le service.De vérifier pour voir si vous avez accès à internet publics, alors vous pouvez exécuter les opérations suivantes;
L'idéal serait d'héberger vos propres
/generate_204
sur votre serveur web, alors vous ne serez pas pris au dépourvu par un sans-papiers changement par Google. Il peut aussi agir comme un moyen de vérification de l'accessibilité de votre serveur à partir de l'appareil.À l'aide de ce projet en collaboration avec le
ConnectivityManager
devriez commencer à vous donner une idée assez claire de l'état d'avancement de la mise en réseau et l'accessibilité de votre serveur.RedirectMatch 204 generate_204$
dans votre configuration. Je ne peux malheureusement pas aider au-delà de Apache et vous auriez besoin de consulter la documentation de votre serveur pour voir si c'est possible. Sinon, vous aurez besoin pour revenir à un langage côté serveur pour générer les 204 pour vous.