我从我的Android设备向服务器发送一些数据,然后从服务器返回Json Response。返回的数据是一大堆数据(精确多个图像)。 我正在回应从服务器返回的statusCode,它是200.但JAVA代码继续等待声明
objHttpEntity = objHttpResponse.getEntity();
statusCode=objHttpResponse .getStatusLine().getStatusCode();
String responseDataString = EntityUtils.toString(objHttpEntity);//this statement
并且在日志中,我看到我的垃圾收集器正在运行,从资源中取回内存以容纳当前接收的数据。
在RAM为1GB或更小的设备中,应用程序突然崩溃,发出OutOfMermoryException
。但是在RAM大于后者的设备中,应用程序等待,等待,等待并最终执行其余的连续语句我的代码
如何摆脱异常(在RAM较少的设备中)。 OR可以减少代码等待的时间。
接收状态代码200,清楚地表明服务器已完成其工作,现在所有处理必须在客户端(设备)端执行。
注意:已经在stackOverflow上发布了关于此问题的所有三个问题,但这些问题都不合适且无法解决问题。
答案 0 :(得分:0)
为什么不试试这个?
HttpGet get = new HttpGet(apiURL);
HttpResponse response = client.execute(get);
HttpEntity resEntity = response.getEntity();
InputStream is = resEntity.getContent();
String result = convertStreamToString(is);
public static String convertStreamToString(InputStream is) {
/*
* To convert the InputStream to String we use the
* BufferedReader.readLine() method. We iterate until the BufferedReader
* return null which means there's no more data to read. Each line will
* appended to a StringBuilder and returned as String.
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}