import org.springframework.stereotype.Component; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; @Component public class URLAvailability { private static URL url; private static HttpURLConnection con; private static int state = -1; /** * 功能:检测当前URL是否可连接或是否有效, * 描述:最多连接网络 5 次, 如果 5 次都不成功,视为该地址不可用 * * @param urlStr 指定URL网络地址 * @return URL */ public synchronized String isConnect(String urlStr) { int counts = 0; if (urlStr == null || urlStr.length() <= 0) { return null; } while (counts < 5) { try { url = new URL(urlStr); con = (HttpURLConnection) url.openConnection(); state = con.getResponseCode(); System.out.println(counts + "= " + state); if (state == 200) { System.out.println("URL可用!"); } break; } catch (Exception ex) { counts++; System.out.println("URL不可用,连接第 " + counts + " 次"); urlStr = null; continue; } } return urlStr; } public static void main(String[] args) { URLAvailability u = new URLAvailability(); // http://localhost:18082/api/get/1 String url = u.isConnect("http://127.0.0.1:18082/api/"); System.out.println(url+"addScreen/"); String posturl1="http://127.0.0.1:18089/api/"; String posturl2="http://127.0.0.1:18082/api/"; String posturl3="http://127.0.0.1:18084/api/"; String posturl = null; if (null == u.isConnect(posturl1)) { if (null == u.isConnect(posturl2)) { if (null == u.isConnect(posturl3)) { posturl = null; } else { posturl = posturl3; } } else { posturl = posturl2; } } else { posturl = posturl1; } System.out.println(posturl); } }