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

Posted

技术标签:

【中文标题】Android 上 DefaultHttpClient 中连接和套接字超时的默认值是啥?【英文标题】: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( );? 【参考方案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。以防万一 - 在我提出排除任何潜在未完全初始化状态的请求后,我调用了这个。无论如何,谢谢。

以上是关于Android 上 DefaultHttpClient 中连接和套接字超时的默认值是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 应用程序在浏览器和 ios 上运行,但不在 android 上,与服务器的连接不成功。 (文件///android_asset/www/index.html)在android上

在 xml (android:, app:, @.., ...) 上使用 android 前缀

Android Webview 在三星和 Android 11 上崩溃

Android 在 Android 手机 LockScreen 上显示活动

android权限--android开发中的权限及含义(上)

Android:如何在 android 4.2 上折叠状态栏? [复制]