gpt4 book ai didi

android - 安全智能的 http 连接断开

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:05 27 4
gpt4 key购买 nike

在连接断开和重用方面,我有几个关于 OkHttp 的建议用法的问题。然而,关于这些问题的 Android 文档并不是很清楚。所以他们在这里:

  1. 安全的多线程断开:

(a) 根据 Android 文档:https://developer.android.com/reference/java/net/HttpURLConnection.htmlHttpUrlConnection 不是线程安全的。

然而,根据 OkHttp 的作者,从不是主动使用连接的线程终止 Activity 连接的推荐方法是调用 HttpUrlConnection.disconnect() 方法: https://github.com/square/okhttp/issues/1842 .

那么,除了主动使用连接的线程之外,是否可以从其他线程安全地调用此 API? Android 中集成的所有 OkHttp 版本都是这样吗?

(b) 在调用 disconnect() 之后,我们是否也应该通过调用 close() API 手动关闭 InputStream?还是一旦调用断开连接就不需要了?

  1. 关于套接字重用:确保连接可以重用的推荐方法是什么? Android 文档说明如下:

Once the response body has been read, the HttpURLConnection should be closed by calling disconnect(). Disconnecting releases the resources held by a connection so they may be closed or reused.

这意味着为了重用套接字,disconnect() 应该 被调用。

然而,这似乎与我读到的其他引用资料相矛盾,在这些引用资料中,为了重用连接,唯一需要关闭的资源是 InputStream,而实际上 disconnect() 不应该 被召唤。这也暗示在这里:https://github.com/square/okhttp/issues/702

最佳答案

在任何线程上调用 disconnect() 都是安全的,即使 HttpURLConnection 正被另一个线程使用。这会取消调用但不会释放其资源。

如果您创建了 HttpURLConnection,您必须在完成后关闭它。最好的方法是关闭输入流或错误流。您获得哪些取决于响应的状态代码。

关于android - 安全智能的 http 连接断开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43166504/

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