0

正如标题所述,我在 android 中使用 httpget,它的工作原理。但是,它返回的数据不完整。该调用返回大约 99kb 的 json 数据。但是,我的函数只产生 38kb 并且 json 字符串不完整。

我根本没有收到任何错误,所以很难看出它为什么会发生。

尺寸测量只是我在浏览器中进行调用并将输出保存到文件,并对函数的输出执行相同操作。

这是获取网址的代码:

public String getpage2(){
    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet(this.request);
    HttpResponse response = null;
    try {
        response = client.execute(request);
    } catch (ClientProtocolException e2) {
        // TODO Auto-generated catch block
        Log.e("getpage",e2.toString());
        e2.printStackTrace();
    } catch (IOException e2) {
        // TODO Auto-generated catch block
        Log.e("getpage",e2.toString());
        e2.printStackTrace();
    }

    String html = "";
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        StringBuilder builder = new StringBuilder();
        for (String line = null; (line = reader.readLine()) != null ; ) {
            builder.append(line).append("\n");
        }
        html = builder.toString();
        Log.d("nr",builder.capacity() + "/" + builder.length());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.e("getpage",e.toString());
        e.printStackTrace();
    }finally{

    }
    return html;
}

任何帮助,将不胜感激。我很茫然...

4

1 回答 1

1

您可以尝试使用此方法逐字复制数据,而不必担心缺少 EOL:

StringBuilder sb = new StringBuilder();
int len;
char[] buf = new char[20];
while((len = reader.read(buf)) != -1) {
    sb.append(buf, 0, len);
}
于 2013-03-29T02:10:06.370 回答