Android:为 HttpPost 设置连接超时

问题描述 投票:0回答:2

实际上这是我设置连接超时所必须做的(来自kuester2000this answer):

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);

但在我的应用程序中,我将

httpClient
作为 MainActivities 中的
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
并在所有其他Activitites中使用httpClient而不是在每个Activity中设置参数。

谢谢

android connection httpclient
2个回答
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);
    }


   ...

}

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);
© www.soinside.com 2019 - 2024. All rights reserved.