Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I set a timeout against a BufferedReader based upon a URLConnection in Java?

Tags:

java

url

sockets

I want to read the contents of a URL but don't want to "hang" if the URL is unresponsive. I've created a BufferedReader using the URL...

URL theURL = new URL(url);
URLConnection urlConn = theURL.openConnection();
urlConn.setDoOutput(true);
BufferedReader urlReader = new BufferedReader(newInputStreamReader(urlConn.getInputStream()));

...and then begun the loop to read the contents...

do
    {
    buf = urlReader.readLine();
    if (buf != null)
        {
        resultBuffer.append(buf);
        resultBuffer.append("\n");
        }
    }
while (buf != null);

...but if the read hangs then the application hangs.

Is there a way, without grinding the code down to the socket level, to "time out" the read if necessary?

like image 200
dacracot Avatar asked Sep 18 '08 15:09

dacracot


1 Answers

I think URLConnection.setReadTimeout is what you are looking for.

like image 65
jsight Avatar answered Sep 23 '22 19:09

jsight