在我的Android应用程序中,我试图使用httpclient和httpget获得一个网站。
它在仿真器和HTC Desire HD上运行正常。
但是,当我断开与wifi的连接并尝试在3G网络上获取te网页时,响应有时是不完整的。
我正在使用以下代码来获取网页:
public String htmlBody (String strURI)
{
String strBody = "";
HttpClient httpclient = new DefaultHttpClient();
//HttpProtocolParams.setUseExpectContinue(httpclient.getParams(), false);
try {
HttpGet httpget = new HttpGet(strURI);
HttpResponse response = httpclient.execute(httpget, localContext);
HttpEntity entity = response.getEntity();
strBody = Functions.convertStreamToString(entity.getContent());
}
} finally {
httpclient.getConnectionManager().shutdown();
}
return strBody;
}
有没有办法确保响应完成?还是在响应不完整时恢复httpget?
最佳答案
我最近也遇到了同样的问题。经过几次实验,我想我找到了答案:
Android不会通过3G网络中的单个InputStream#read()调用来读取完整的响应。
以下代码可能有效:
InputStream in = entity.getContent();
int length = 0;
while (true) {
int ret = in.read(buffer, length, buffer.length - length);
if (ret == -1) break;
length += ret;
}
关于android - 在3g Android上httpget后响应不完整,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5505425/