gpt4 book ai didi

android - android 2.3.5 和 2.3.6 上的 HttpURLConnection

转载 作者:太空狗 更新时间:2023-10-29 15:19:17 26 4
gpt4 key购买 nike

升级到android 2.3.5和2.3.6后,android的代码HttpURLConnection 类:urlconn.connect()、urlconn.getOutputStream()并且 urlconn.getInputStream() 变得非常慢(每个命令都需要超过 5 秒,在 2.3.2 或 2.2 版本下只需不到1秒)。有没有人有同样的情况?

我的代码是这样的:

getUrl = new URL(url);
urlConn = (HttpURLConnection) getUrl.openConnection();

urlConn.setUseCaches(false);
urlConn.setRequestMethod(httpMethod.name());
urlConn.setConnectTimeout(HTTP_CONNECT_TIMEOUT);
urlConn.setReadTimeout(HTTP_READ_TIMEOUT);
urlConn.setDoInput(true);
if (requestBody != null)
urlConn.setFixedLengthStreamingMode(requestBody.length());
if (!(httpMethod == HttpMethod.GET))
urlConn.setDoOutput(true);

urlConn.connect();

if (requestBody != null) {
osw = new OutputStreamWriter(urlConn.getOutputStream());
osw.write(requestBody);
osw.flush();
}

in = urlConn.getInputStream();
buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[256];
while ((nRead = in.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}
buffer.flush();
responseBody = buffer.toByteArray();
responseCode = urlConn.getResponseCode();

问候,郑

最佳答案

两条建议:

  1. 在每个 HTTP 操作之后插入日志语句。这样您就可以看到哪个步骤花费的时间最多。
  2. 一次从 InputStream 中读取 256 个字节会非常低效。根据我的经验,8k 缓冲区大小 (8192) 在大多数设备和网络上效果最佳。

关于android - android 2.3.5 和 2.3.6 上的 HttpURLConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9563534/

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