When I try to use URLConnection to check if a url is accessible using the following code:
try { URL url = new URL("http://169.254.169.254/latest"); URLConnection connection = url.openConnection(); connection.setConnectTimeout(5000); connection.connect(); System.out.println("Connected successfully using url"); } catch (IOException e) { e.printStackTrace(); }
I expected the behavior is: connect should be success if the host is reachable, else throw exception. It works fine without the anti-virus application, but always print “connected successfully” even the host is not reachable. Then I tried to use Socket to connect:
Socket socket = new Socket(); socket.connect(new InetSocketAddress("169.254.169.254", 80)); if (socket.isConnected()) { System.out.println("Connected successfully using socket"); } else { System.out.println("Connected failed using socket"); }
But Still got the same problem. The solution for it: Disable http check in anti-virus, for example, in ESET NOD32, the settings is Web access protection -> Http, Https -> Http scanner