144 votes

Question sur le délai d'attente de HttpURLConnection

Je veux renvoyer false si l'URL prend plus de 5 secondes pour se connecter - comment est-ce possible en utilisant java ? Voici le code que j'utilise pour vérifier si l'URL est valide

   HttpURLConnection.setFollowRedirects(false);
   HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
   con.setRequestMethod("HEAD");
   return (con.getResponseCode() == HttpURLConnection.HTTP_OK);

222voto

dbyrne Points 18604

HttpURLConnection a un setConnectTimeout méthode.

Il suffit de fixer le délai d'attente à 5000 millisecondes, puis d'attraper java.net.SocketTimeoutException

Votre code devrait ressembler à quelque chose comme ceci :

try {
   HttpURLConnection.setFollowRedirects(false);
   HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
   con.setRequestMethod("HEAD");

   con.setConnectTimeout(5000); //set timeout to 5 seconds

   return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (java.net.SocketTimeoutException e) {
   return false;
} catch (java.io.IOException e) {
   return false;
}

128voto

ZZ Coder Points 36990

Vous pouvez définir le délai d'attente comme suit,

con.setConnectTimeout(connectTimeout);
con.setReadTimeout(socketTimeout);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X