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: null
和http.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 上显示活动