gpt4 book ai didi

Android (2.1) HttpGet.abort() 不工作

转载 作者:行者123 更新时间:2023-11-29 14:05:28 31 4
gpt4 key购买 nike

我调用了 abort() 并且阻塞在 execute() 中的线程不会解除阻塞,直到它因异常而超时。它可能需要 10 秒以上,所以这是一个大问题。

我环顾四周,找不到这个问题的答案。

文档说 abort() 应该导致 execute() 阻塞 i/o 立即解除阻塞。研究表明此问题已在不久前得到解决。

当然,我正在从不同的线程调用 abort() 和 execute()。我的代码没有什么特别之处,所以我不会浪费空间列出它。

我发现一些帖子建议弄乱 HttpClient 下的套接字等,但这些都没有用。

最佳答案

您只是希望 HttpGet 在一段已知时间后超时,还是您必须尝试取消获取?我怀疑中止只有在它有一个要读取的响应流之后才有效......就像中止长时间下载一样。您可以尝试使用 URLConnection 而不是 HttpGet,它允许您独立设置读取和连接超时。

URL url= new URL(urlString);
URLConnection conn = url.openConnection();
conn.setConnectTimeout(getInstance().getConnectionTimeout());
conn.setReadTimeout(getInstance().getReadTimeout());
if (encodedPostargs != null)
{
conn.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(encodedPostargs);
out.flush();
out.close();
}
return new BufferedReader(new InputStreamReader(conn.getInputStream()));

关于Android (2.1) HttpGet.abort() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7301272/

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