实际上这是我必须做的设置连接超时:
HttpGet httpPost = new HttpGet("www.xxxx.com/method");
HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is established.
// The default value is zero, that means the timeout is not used.
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpResponse response = httpClient.execute(httpGet);
但是在我的应用程序中,我在MainActivities中将httpClient
作为Static field
并在所有其他活动中使用它。只是为了开会。
所以,我应该在所有活动中都有这个代码:
HttpParams httpParameters = new BasicHttpParams();
// Set the timeout in milliseconds until a connection is established.
// The default value is zero, that means the timeout is not used.
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT)
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
然后
MainActivity.httpClient.setParams(httpParameters);
我只是想知道,我如何在params
中设置MainActivity
并在所有其他活动中使用httpClient,而不是在每个活动中设置参数。
谢谢
答案 0 :(得分:3)
在主活动类中使用静态代码块来设置参数。
public class MainActivity extends Activity {
static final DefaultHttpClient httpClient;
static {
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);
HttpConnectionParams.setSoTimeout(httpParameters, 5000);
httpClient = new DefaultHttpClient(httpParameters);
}
...
}
答案 1 :(得分:2)
试试这个:
创建如下变量:
private static final long CONN_MGR_TIMEOUT = 10000;
private static final int CONN_TIMEOUT = 50000;
private static final int SO_TIMEOUT = 50000;
并将此代码与httppost:
一起使用 ConnManagerParams.setTimeout(params, CONN_MGR_TIMEOUT);
HttpConnectionParams.setConnectionTimeout(params, CONN_TIMEOUT);
HttpConnectionParams.setSoTimeout(params, SO_TIMEOUT);