代码停留在EntityUtils.toString并等待很长时间

时间:2015-08-27 11:51:17

标签: java android

我从我的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上发布了关于此问题的所有三个问题,但这些问题都不合适且无法解决问题。

1 个答案:

答案 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();
    }