【问题标题】:What are default values for connection and socket timeouts in DefaultHttpClient on Android?Android 上 DefaultHttpClient 中连接和套接字超时的默认值是什么?
【发布时间】:2012-03-02 22:07:40
【问题描述】:

在 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 个超时的默认值,但找不到。有谁知道这些超时的默认值是什么?我想获得设置值的来源的链接或关于此的官方文档(而不是仅仅听取意见)。

【问题讨论】:

  • 这个可以帮忙吗:long timeout = stub._getServiceClient( ).getOptions( ).getTimeOutInMilliSeconds( );?

标签: android timeout httpclient


【解决方案1】:

试试下面的代码部分:

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

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

    【讨论】:

    • 它返回http.socket.timeout: nullhttp.connection.timeout: null。以防万一 - 在我提出排除任何潜在未完全初始化状态的请求后,我调用了这个。无论如何,谢谢。
    猜你喜欢
    • 2013-09-08
    • 1970-01-01
    • 2016-05-10
    • 2012-11-17
    • 2016-10-02
    • 1970-01-01
    • 2014-07-05
    • 2017-05-05
    相关资源
    最近更新 更多