gpt4 book ai didi

android - 在 3g Android 上 httpget 后响应不完整

转载 作者:行者123 更新时间:2023-11-30 04:43:35 24 4
gpt4 key购买 nike

在我的 Android 应用程序中,我尝试使用 httpclient 和 httpget 获取网站。它在模拟器和我的 HTC Desire HD 上运行良好。但是当我断开 wifi 并尝试在 3G 网络上获取网页时,响应有时不完整。我正在使用以下代码获取网页:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com