在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"));
如果您真的想知道默认值是什么(而不是自己设置值),那么值得一试。