8

我正在使用 HttpURLConnection 类发出 http 请求。我的代码看起来像这样 -

while(true){
    try{
         connection=(HttpURLConnection)url.openConnection();
         connection.setDoOutput(true);
         connection.setConnectTimeout(2*1000);
         InputStream in=connection.getInputStream();
    }
    catch(SocketTimeOutException e){}
    catch(IOException e){}
}

检索 InputStream 对象后,我会对数据进行一些处理。我的问题是,如果我让程序运行足够长的时间,对 getInputStream 的调用就会阻塞,而我永远不会超过它。

我错过了什么吗?任何指针或帮助将不胜感激。谢谢。

4

2 回答 2

7

设置连接的读取超时。此外,一旦你完成它们,在 finally 块中关闭流。

于 2012-05-22T15:44:12.493 回答
1

您应该关闭未使用的连接。这是示例:

connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setReadTimeout(2*1000);
connection.connect();
reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
stringBuilder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
 stringBuilder.append(line + "\n");
}
String result = stringBuilder.toString();
reader.close();
于 2012-05-22T15:42:34.483 回答