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