从输入流中读取大量数据,最后丢失一些数据

时间:2015-11-19 05:20:48

标签: java inputstream

Java(TM) SE Runtime Environment (build 1.7.0_45-b18)

您好,

我正在使用httpUrlConnection从webservice中检索json字符串。然后我从连接

获取inputStream
jsonString = readJSONInputStream(mHttpUrlconnection.getInputStream());

然后我使用以下函数读取输入流以获取JSON。

private String readJSONInputStream(final InputStream inputStream) {
    Reader reader = null;

    try {
         final int SIZE = 16024;

         char[] buffer = new char[SIZE];
         int bytesRead = 0;
         int read = 0;

         reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), SIZE);

         String line = "";
         String jsonString = "";

         while((line = reader.readLine()) != null) {
            jsonString += line;
         }

         /* Success */
         return jsonString;
    }
    catch(IndexOutOfBoundsException ex) {
        log.log(Level.SEVERE, "UnsupportedEncodingexception: " + ex.getMessage());
    }
    catch(IOException ex) {
        log.log(Level.SEVERE, "IOException: " + ex.getMessage());
    }
    finally {
        /* close resources */
        try {
            reader.close();
            inputStream.close();
        }
        catch(IOException ex) {
            log.log(Level.SEVERE, "IOException: " + ex.getMessage());
        }
    }

    return null;
}

但是,如果json很小,说600字节,那么一切都还可以。但我有一些大小约为15000字节的JSON,因此我将最大大小设置为16024。

然而,JSON只读到大约约6511而且只是切断了。

如果JSON很小,则没有问题< 1000字节。但是对于更大的JSON,它只读了大约一半。

我的数据就在那里,因为我使用http请求插件在浏览器中对此进行了测试。

我在这里做错了什么。我应该检查的任何事情。

非常感谢任何建议,

1 个答案:

答案 0 :(得分:0)

问题已解决。由于记录器未显示所有信息。毕竟不是一个真正的问题。