我知道 HttpConnectionParams 用于设置 http 请求的超时,但我不知道如何正确使用它。每个请求都有 setParams(HttpParams p) - 我认为在每个请求上设置 http 参数有点多余。我宁愿以全局方式配置 AndroidHttpClient - 以便每个请求共享相同的 HttpParams 配置。
这是否HttpConnectionParams.setConnectionTimeout(params, 1500);
在全球范围内运作?
我知道 HttpConnectionParams 用于设置 http 请求的超时,但我不知道如何正确使用它。每个请求都有 setParams(HttpParams p) - 我认为在每个请求上设置 http 参数有点多余。我宁愿以全局方式配置 AndroidHttpClient - 以便每个请求共享相同的 HttpParams 配置。
这是否HttpConnectionParams.setConnectionTimeout(params, 1500);
在全球范围内运作?
HttpConnectionParams是要使用的类:
示例代码(与您的一样未完成:-))
HttpClient httpClient = new DefaultHttpClient();
final HttpParams httpParams = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
所以你必须这样做(不深入检查你的代码):
public class Client {
public static void sendRequest(final HttpUriRequest request,
int RequestType,
ResponseListener callback) {
HttpClient httpClient = new DefaultHttpClient();
final HttpParams httpParams = httpClient.getParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 5000);
HttpConnectionParams.setSoTimeout(httpParams, 5000);
(new AsynchronousSender(httpClient, request, RequestType,
new Handler(), new CallbackWrapper(callback))).start();
}
编辑:
本质上setSoTimeout()
是一样的,但它会等待的不仅仅是初始连接。因此,您将检查每个数据包以查看它是否超时,而setConnectionTimeout
只有在初始连接时才会超时。