Java http读取超时问题

时间:2011-12-19 15:35:34

标签: java http networking

我正在尝试从远程服务器获取一些数据。为此,我使用HttpURLConnection。问题是,有时建立连接后的服务器只是挂起或什么,不关闭连接,我挂在那里。那个被绞死的线程获得了锁定,所以所有其他线程都只是吸吮:D 代码:

try {
        URL url = new URL(urlString);
        URLConnection urlConnection = url.openConnection();
        HttpURLConnection connection = (HttpURLConnection) urlConnection;

        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName(CharEncoding.UTF_8)));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = br.readLine()) != null) {

最后一行是我们挂的地方。我找到了方法setConnectTimeout(timeout),但似乎并非如此,因为在建立连接之前它是超时的。解决这种情况的常用方法是什么?

1 个答案:

答案 0 :(得分:3)

假设您在建立连接后意味着超时(可能在读取期间),那么

这样的事情怎么样
URLConnection urlConnection = url.openConnection();
urlConnection.setConnectTimeout(c_timeout);
urlConnection.setReadTimeout(r_timeout);
stream = urlConnection.getInputStream();