gpt4 book ai didi

java - 处理连接问题 HttpsURLConnection

转载 作者:行者123 更新时间:2023-12-01 14:44:22 24 4
gpt4 key购买 nike

我有一个简单的客户端-服务器应用程序,它通过 REST API 下载文件。当我使用基本的 http 身份验证时,文件是通过 ssl 发送的。

//my download loop
HttpsURLConnection conn;
//some handling of response codes and content-length
InputStream s = conn.getInputStream();
while (true) {
i = br.read(buffer); //if server shuts down, I stall here
if (i == -1)
break;
downloadedSize += i;
fis.write(buffer, 0, i);

}

这一切都工作正常,没有任何问题,直到代码遇到服务器关闭文件传输的情况。那时代码只是停止,我有一个无用的线程。

我的问题是如何检测服务器是否已关闭?在 Wireshark 中,我看到发送了 RST 信号,但没有引发异常。在我看来,这是一项相当常见的任务但我还没有找到一个简单的答案。

目前我正在使用计划任务,该任务检查下载每个任务是否有任何进展不时地。如果它检测到问题,那么它会创建一个新的工作线程并告诉我的通信服务使用该线程。

这是一个非常丑陋的解决方案,因为线程最终可能会成为孤立的。

我尝试使用 available() 来查看是否有任何可用数据,但由于这是 SSL,它总是返回 0。

最佳答案

原来我一直在调用 conn.setReadTimeout(5000);在错误的地方

conn = getConnection(address);
conn.setReadTimeout(5000);
conn.setRequestMethod("GET");

这将导致 read() 正确失败。

关于java - 处理连接问题 HttpsURLConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15599713/

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