日期:2014-05-20  浏览次数:20921 次

HttpClient获得的网页数据,长度太长,怎么处理?
各位大神,我今天在做新浪微博的客户端,已经可以成功登陆了。但是,有一个很蛋疼的问题,就是,我登陆之后,获得的网页长度超过String可以容纳的上限了。所以,我每次用EntityUtils.toString(response.getEntity());只能获得网页下面的代码。
我有用过一个输入流去获得,但是老是读取的时候,一下子就到达尾端了。不知道为什么。不知道哪位大神做过这样的东西,有这样的经验。
下面是我的处理输入流的代码:
InputStream input = httpEntity.getContent();
byte[] b = new byte[1024];
int len = 0;
while( (len=input.read(b)) != -1 )
{
System.out.println(b.toString());
}
if(input!=null)input.close();

还有,那个流不是空的,我试过, int a = (int)httpEntity.getContentLength();
System.out.println(a);
它输出的值是:138928
我实在没有办法了,跪求各位大神帮忙啊。

------解决方案--------------------
byte[] b = new byte[1024];
int len = 0;
while( (len=input.read(b)) != -1 )
{
System.out.println(b.toString());
}

==》

byte[] b = new byte[1024];
int len = 0;
StringBuffer buff = new StringBuffer();
while( (len=input.read(b)) != -1 )
{
System.out.println(b.toString());
 buff.append(new String(b));
}

------解决方案--------------------
使用一个buff类包装下来读 每次读1024放入byte数组 然后做操作