Comment vérifier rapidement si l'URL du serveur est disponible

J'ai une URL dans le formulaire

http://www.mywebsite.com/util/conv?a=1&from=%s&to=%s

Et que vous souhaitez vérifier si elle est disponible.

Les liens de redirection moi sur une mauvaise page demande si j'essaie de l'ouvrir avec un navigateur, via le code que je puisse obtenir les données dont j'ai besoin.

À l'aide d'un bloc try-catch sur une requête HTTP procédure est assez lent, donc, je me demandais comment je pourrais ping similaire adresse pour vérifier si son serveur est actif.


J'ai essayé

boolean reachable = InetAddress.getByName(myLink).isReachable(6000);

Mais renvoie toujours false.

J'ai aussi essayé de

public static boolean exists(String URLName) {

    try {
        HttpURLConnection.setFollowRedirects(false);
        HttpURLConnection con = (HttpURLConnection) new URL(URLName).openConnection();
        con.setConnectTimeout(1000);
        con.setReadTimeout(1000);
        con.setRequestMethod("HEAD");
        return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

Qui renvoie la valeur correcte à la fin du processus, le bit est trop lent si le serveur n'est pas disponible.

MODIFIER

J'ai compris quelle est la cause de la lenteur

a) si le serveur renvoie des données, mais interrompt la demande avant de remplir la demande, le délai d'attente est ignoré et coincé jusqu'à ce que renvoie un Exception que conduire à l'exécution de rejoindre le bloc catch, c'est la cause de la lenteur de cette méthode, et encore je n'ai pas trouvé une solution valable pour l'éviter.

b) Si je démarre l'appareil android, ouvrez l'Application sans connexion, la valeur false est retourné correctement, si l'application est ouverte avec une connexion internet active et l'appareil a perdu sa connexion internet, il se passe la même chose de l'affaire d'Un (même si j'essaie de le terminer et redémarrez l'Application... je ne sais pas pourquoi, je suppose que quelque chose reste en cache)

Tout ceci semble lié au fait Java URLConnection ne fournit pas de fail-safe timeout sur le lit. En regardant l'échantillon à ce lien j'ai vu qui utilise un thread pour interrompre la connexion d'une certaine façon, mais si j'ajoute simplement la ligne new Thread(new InterruptThread(Thread.currentThread(), con)).start(); comme dans l'exemple, rien ne change.

essayez d'utiliser getResponseMessage() ou getResponseCode()
Bad Request signifie que votre URL n'est pas valide, mais pas que le serveur n'est pas disponible
Pourriez-vous me donner plus de détails une utilisation a répondu quelque chose de similaire, mais semble aussi lent que d'attente pour l'exception de liés bloc try catch
Permet de dicuss de stackoverflow chat
J'étais en mode hors connexion lorsque vous avez écrit le commentaire, Si nous connecter à différents temps peut-être démarrer un chat serait pas facile, pourquoi ne pas vous donner une réponse? Je serai heureux de les accepter et de upvote si résoudre mon problème, et en plus si quelqu'un a le même problème pourrait trouver une aide utile. Merci

OriginalL'auteur AndreaF | 2014-09-12