JAL-3855 convenience method to check a URL will return a 200
authorJim Procter <j.procter@dundee.ac.uk>
Tue, 27 Jul 2021 12:33:31 +0000 (13:33 +0100)
committerJim Procter <j.procter@dundee.ac.uk>
Tue, 27 Jul 2021 12:44:01 +0000 (13:44 +0100)
src/jalview/util/HttpUtils.java

index 74f77a2..5473f5a 100644 (file)
@@ -22,7 +22,12 @@ package jalview.util;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.ProtocolException;
 import java.net.URL;
+import java.util.List;
+
+import javax.ws.rs.HttpMethod;
 
 public class HttpUtils
 {
@@ -68,5 +73,32 @@ public class HttpUtils
   {
     return file.startsWith("http://") || file.startsWith("https://");
   }
+  
+
+  /**
+   * wrapper to get/post to a URL or check headers
+   * @param url
+   * @param ids
+   * @param readTimeout
+   * @return
+   * @throws IOException
+   * @throws ProtocolException
+   */
+  public static boolean checkUrlAvailable(URL url,
+          int readTimeout) throws IOException, ProtocolException
+  {
+    // System.out.println(System.currentTimeMillis() + " " + url);
+
+    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+
+    connection.setRequestMethod(HttpMethod.HEAD);
+
+    connection.setDoInput(true);
+
+    connection.setUseCaches(false);
+    connection.setConnectTimeout(300);
+    connection.setReadTimeout(readTimeout);
+    return connection.getResponseCode() == 200;
+  }
 
 }