gpt4 book ai didi

java - HttpURLConnection getInputStream() 有一秒延迟

转载 作者:太空宇宙 更新时间:2023-11-04 07:16:44 56 4
gpt4 key购买 nike

我正在使用 HttpURLConnection 发出 POST 请求。我在测试期间总是观察到相同的行为:

  1. 第一个请求运行速度非常快(毫秒)
  2. 所有后续请求都需要一秒 + 几毫秒

所以有什么东西导致了 1 秒的延迟。会是什么?延迟恰好发生在 HttpURLConnection#getInputStream() 中。我用 HttpClient 替换了实现 - 然后一切正常,没有第二次延迟(所以这不是服务器故障)。但我真的不想使用任何外部依赖项,所以我想修复 HttpURLConnection 的问题...有什么想法吗?

低于当前实现。我尝试了 stackoverflow 中的一些提示(向请求添加 header ),但没有成功。

        URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");

con.setRequestProperty("Content-Length", ""
+ (body == null ? 0 : body.length));

// Send post request
con.setDoOutput(true);
OutputStream wr = con.getOutputStream();
if (body != null) {
wr.write(body);
}
wr.flush();
wr.close();

BufferedReader rd = new BufferedReader(new InputStreamReader(
con.getInputStream()));
String line;
String result = "";
while ((line = rd.readLine()) != null) {
result += line;
}

rd.close();
con.disconnect();

return result;

PS:这是关于jse的,而不是android。

最佳答案

您永远不会关闭连接的输入流 - 这可能意味着该连接不符合池化条件,并且在下一次尝试时,它会等待一秒钟以查看上一个请求的连接是否变得符合池化条件。

至少,关闭流是个好主意。如果您使用的是 Java 7,请使用 try-with-resources block - 编写者也是如此。

顺便说一句,我建议您在阅读时明确说明您期望的编码 - 或使用更高级别的库来根据 header 自动检测编码。

关于java - HttpURLConnection getInputStream() 有一秒延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860436/

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