Android上DefaultHttpClient中连接和套接字超时的默认值是什么



在Android 2.1/2.2上,我使用Android SDK中的DefaultHttpClient

Apache在他们的文档中说有两个超时:

  • CoreConnectionPNames.SO_TIMEOUT='http.socket.TIMEOUT':以毫秒为单位定义套接字超时(SO_TIMEOUT),它是等待数据的超时,或者换句话说,是两个连续数据包之间的最长不活动期)。超时值为零被解释为无限超时。此参数需要java.lang.Integer类型的值。如果未设置此参数,读取操作将不会超时(无限超时)。

  • CoreConnectionPNames.CONNECTION_TIMEOUT='http.CONNECTION.TIMEOUT':确定建立连接之前的超时(以毫秒为单位)。超时值为零被解释为无限超时。此参数需要java.lang.Integer类型的值。如果未设置此参数,连接操作将不会超时(无限超时)。

我尝试在Android资源中搜索这两个超时的默认值,但找不到。有人知道这些超时的默认值是什么吗?我想获得一个链接,链接到设置值的来源或官方文档(而不仅仅是听取意见)。

只需尝试下面的代码部分:

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

难道您不能使用以下方法获得默认值(或设置的任何值)吗:

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"));

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

最新更新