HttpURLConnection.getInputStream()阻止

我正在使用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的调用就会阻塞,而我永远不会超过它。

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

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

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

 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();