安卓中 DefaultHttpClient 的连接和套接字超时的默认值是多少?

17
在 Android 2.1/2.2 上,我使用了在 Android SDK 中找到的 DefaultHttpClient
Apache 在他们的文档中说有 2 个超时时间:
  • CoreConnectionPNames.SO_TIMEOUT='http.socket.timeout': 定义套接字超时(SO_TIMEOUT)的毫秒数,即等待数据的超时时间或者换句话说是两个连续数据包之间最长的不活动期。0 值被解释为无限超时。这个参数需要一个类型为 java.lang.Integer 的值。如果没有设置,读取操作将不会超时(无限超时)。

  • CoreConnectionPNames.CONNECTION_TIMEOUT='http.connection.timeout': 确定连接建立的超时时间,以毫秒为单位。0 值被解释为无限超时。这个参数需要一个类型为 java.lang.Integer 的值。如果没有设置,连接操作将不会超时(无限超时)。

我尝试搜索 Android 源代码获取这 2 个超时的默认值,但未能找到。是否有人知道这些超时的默认值是什么?我希望能够得到一个设置这些值的源代码链接或官方文档(而不仅仅是听到观点)。

这个能帮上忙吗:long timeout = stub._getServiceClient( ).getOptions( ).getTimeOutInMilliSeconds( ); - Danijel
2个回答

11

只需尝试以下代码段:

import android.net.http.AndroidHttpClient;
...
        AndroidHttpClient h = AndroidHttpClient.newInstance("My http client");
        // ...
        Log.d(TAG, "http.socket.timeout: " + h.getParams().getParameter("http.socket.timeout"));
        Log.d(TAG, "http.connection.timeout: " + h.getParams().getParameter("http.connection.timeout"));

它在我的设备上可以正常工作:

12-02 16:27:54.119 D/Exam(17121): http.socket.timeout: 60000
12-02 16:27:54.119 D/Exam(17121): http.connection.timeout: 60000

2
你不应该可以使用类似以下代码获取默认值(或任何已设置的值)吗?
DefaultHttpClient h;
// ...
Log.d(TAG, "http.socket.timeout: " +
      h.getParams().getParameter("http.socket.timeout"));
Log.d(TAG, "http.connection.timeout: "
      + h.getParams().getParameter("http.connection.timeout"));

如果你真的想知道默认值是什么(而不是自己设置值),那么尝试一下也是值得的。

1
它返回http.socket.timeout: nullhttp.connection.timeout: null。 以防万一-在发出请求后,我调用了这个来排除任何可能的未完全初始化状态。 不管怎样,谢谢。 - Vit Khudenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接