我有一个问题试图让Android应用程序(以及服务,它有什么区别)使用持久的HTTP 1.1连接。Android上的持久HttpURLConnections
以下循环(简化测试用例)通过桌面JRE上的单个TCP会话工作,但在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) {
}
}
甲骨文的JDK介绍了一种叫做 '系统属性':
http.keepAlive = 默认:真
http.maxConnections = 默认:5
Android的运行时是否有类似的东西阻止持久连接的维护?
作为一个快速测试,你也可以试试[URLConnection.setRequestProperty(“Connection”,“keep-alive”)](http://developer.android.com/reference/java/net/URLConnection.html#setRequestProperty% 28java.lang.String,%20java.lang。字符串%29)如果设置需要的头部有窍门。 – harism 2011-05-06 23:15:33
感谢您指点正确的方向 - 对于java.net内部使用Apache的HttpClient的事实,Google文档并不特别直截了当。我将使用Apache接口(以及2.11中提供的信息)重写我的代码,并会保持更新。 – qdot 2011-05-06 23:15:57
@harism - 它似乎没有改变任何东西。 – qdot 2011-05-07 00:17:53