I'm trying to read URL in java, and it works as long as the URL is loading in browser.
But if it is just cylcing in the browser and not loading that page when I'm trying to open it in my browser, my java app just hangs, it will probably wait forever given enough time. How do I set timeout on that or something, if its loading for more than 20 seconds that I stop my application?
I'm using URL
Here is a relevant part of the code :
URL url = null;
String inputLine;
try {
url = new URL(surl);
} catch (MalformedURLException e) {
e.printStackTrace();
}
BufferedReader in;
try {
in = new BufferedReader(new InputStreamReader(url.openStream()));
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
in.close();
} catch (IOException e) {
e.printStackTrace();
}
If you are using a
URLConnection
(orHttpURLConnection
) to "read from a url" you have asetReadTimeout()
method which allows you to control that.Edited after you posted the code:
I don't know how u are using the URL class. It would have been better if post a snippet. But here is a way that works for me. See if it helps in your case:
The URL#openStream method is actually just a shortcut for
openConnection().getInputStream()
. Here is the code from the URL class:You can adjust settings in the client code as follows:
Reference: URLConnection#setReadTimeout, URLConnection#setConnectTimeout
sun.net.client.defaultConnectTimeout
andsun.net.client.defaultReadTimeout
system property to a reasonable value.