Android 如何将一个大网页加载到字符串中

Android 如何将一个大网页加载到字符串中,android,httpclient,Android,Httpclient,我是Java和Android的新手,但不熟悉编程和HTTP。此HTTPGET方法主要是从使用ApacheHTTP类的其他示例复制而来,只检索大型网页的前几个K。我检查过网页的行数不超过8192字节(可能吗?),但在40K左右的网页中,我得到的行数可能是6K,也可能是20K。读取的字节数似乎与网页总大小、网页模数8192或网页内容没有简单的关系 各位有什么想法吗 谢谢 public static String myHttpGet(String url) throws Exception { Buf

我是Java和Android的新手,但不熟悉编程和HTTP。此HTTPGET方法主要是从使用ApacheHTTP类的其他示例复制而来,只检索大型网页的前几个K。我检查过网页的行数不超过8192字节(可能吗?),但在40K左右的网页中,我得到的行数可能是6K,也可能是20K。读取的字节数似乎与网页总大小、网页模数8192或网页内容没有简单的关系

各位有什么想法吗

谢谢

public static String myHttpGet(String url) throws Exception {
BufferedReader in = null;
try {
    HttpClient client = getHttpClient();
    HttpGet request = new HttpGet();
    request.setURI(new URI(url));
    HttpResponse response = client.execute(request);
    in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

    StringBuffer sbuffer = new StringBuffer("");
    String line = "";

    while ((line = in.readLine()) != null) {
        sbuffer.append(line + "\n");
    }
    in.close();

    String result = sbuffer.toString();
    return result; 
} finally {
    if (in != null) {
        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
}

无需将自己的HttpEntity写入字符串代码,请尝试:


看起来问题是某个网站的页面开始出现问题。。。我没有这个问题,从其他网站的大页面。所以代码可能没问题。

我不知道8192数字是从哪里来的,但很可能与您的问题无关。8192是BufferedReader的缓冲区大小。如果您想了解
EntityUtils.toString()是如何实现的,看看它——如果你对整个字符串感兴趣,实际上没有必要做基于行的阅读。“没有必要做基于行的阅读”——这有一定的吸引力!事实上,我是在从一个大页面中提取一点点信息,如果这个网页被证明非常长的话,我也曾考虑过“在运行中”这样做。
// this uses the charset the server encoded the entity in
String result = EntityUtils.toString(entity);