gpt4 book ai didi

java - Android 上的持久 HttpURLConnections

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

我在尝试让 Android 应用程序(好吧,服务,它会产生任何影响)使用持久 HTTP 1.1 连接时遇到问题。

以下循环(简化的测试用例)在桌面 JRE 上通过单个 TCP session 工作,但在 Android 设备上会导致整个套接字创建/拆卸循环。

        while (true) {
URL url;
try {
url = new URL("http://10.0.0.125:8080/SRV?");

URLConnection connection = url.openConnection();

HttpURLConnection httpConnection = (HttpURLConnection) connection;
int responseCode = httpConnection.getResponseCode();

} catch (MalformedURLException e) {
} catch (IOException e) {
}
}

Oracle 的 JDK 描述了称为“系统属性”的东西:

http.keepAlive= default: true

http.maxConnections= default: 5

Android 的运行时是否有类似的东西阻止持久连接的维护?

最佳答案

Android 的 JVM 在后台使用 Apache HTTP 组件库进行 HTTP 连接(即使是那些使用 java.net 接口(interface)完成的连接):因此其行为与 Oracle JVM 略有不同。

理论上,底层 Harmony 代码尊重 http.keepAlive 系统属性,但我不确定 Google 的副本是否保留了该行为。

如果您想绝对确定发生了什么,您必须使用 HttpComponents 代码。这是漫长而痛苦的,但如果你看看 http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html它概述了 http 组件的连接管理方法。查看 2.11 节,其中详细介绍了如何使用 HTTP 组件显式控制连接管理。

祝你好运。

关于java - Android 上的持久 HttpURLConnections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5917818/

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