我试图让HTTP响应(只是一个JSON对象)的字符串,有时候这段代码无限的等待时间BufferedReader.readLine()块一会儿
line = reader.readLine()
可能是,这种行为的原因是互联网连接(我使用3G调制解调器),但我需要一个稳定的解决方案来避免这种无限锁定。在这里可以做些什么来避免它?
HttpResponse response = httpClient.execute(httpPost);
InputStream content = null;
JSONObject json_obj;
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
try {
content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content, "UTF-8"), 256);
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
} catch (Exception e) {}
}
当你想杀死一切 – fiddler
为什么(也是最重要的是如何),你可以做'的readLine()'的东西,在一个单独的线程,并关闭读者,你会考虑避免网络查询是非阻塞? (也EntityUtils.toString做你在1行) – njzk2
@fiddler我已经在后台线程中做到了这一点,问题只是关于阻塞。 – Prizoff