HttpURL连接超时设置

新手上路,请多包涵

如果 URL 连接时间超过 5 秒,我想返回 false - 这怎么可能使用 Java?这是我用来检查 URL 是否有效的代码

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

原文由 Malachi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 753
2 个回答

HttpURLConnection 有一个 setConnectTimeout 方法。

只需将超时设置为 5000 毫秒,然后捕获 java.net.SocketTimeoutException

您的代码应如下所示:


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;
}

原文由 dbyrne 发布,翻译遵循 CC BY-SA 2.5 许可协议

你可以像这样设置超时,

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

原文由 ZZ Coder 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题