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

时间:2012-02-10 12:27:53

标签: android timeout httpclient

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

Apache在他们的文档中说有2次超时:

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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"));

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