package cn.koolcloud.ipos.appstore.common;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.json.JSONObject;
import android.content.Context;
import android.os.AsyncTask;
import cn.koolcloud.ipos.appstore.BuildingConfig;
import cn.koolcloud.ipos.appstore.api.ssl.AppStoreSSLSocketFactory;
import cn.koolcloud.ipos.appstore.interfaces.CallBack;
import cn.koolcloud.ipos.appstore.interfaces.Task;
public class AsyncHttpClient {
private static final String TAG = "AsyncHttpClient";
public static int CONNECTION_TIMEOUT = 30 * 1000;// 1;
public static int SO_TIMEOUT = 30 * 1000;
private static final String USER_AGENT = "AllInPay-Network";
public static final HttpParams HTTP_PARAMS;
static {
// Prepare HTTP parameters.
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setStaleCheckingEnabled(params, true);
HttpConnectionParams.setConnectionTimeout(params, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(params, CONNECTION_TIMEOUT);
HttpClientParams.setRedirecting(params, true);
HttpProtocolParams.setUserAgent(params, USER_AGENT);
HttpProtocolParams.setUseExpectContinue(params, false);
HTTP_PARAMS = params;
}
public static DefaultHttpClient getDefaultHttpClient() {
//add ssl param start
if (!BuildingConfig.isHttpsRequst) {
return new DefaultHttpClient();
}
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("https",
new AppStoreSSLSocketFactory(), 443));
/*schemeRegistry.register(new Scheme("https",
new EasySSLSocketFactory(), 8443)); */
ClientConnectionManager connManager = new ThreadSafeClientConnManager(HTTP_PARAMS, schemeRegistry);
// HttpClient httpClient = new DefaultHttpClient(connManager, HTTP_PARAMS);
//add ssl param end
return new DefaultHttpClient(connManager, HTTP_PARAMS);
}
public static Task request(Context context, String url,
JSONObject parameters, CallBack callBack, int responseType) {
class TaskImpl implements Task {
public AsyncTask<?, ?, ?> asynTask;
public TaskImpl(AsyncTask<?, ?, ?> asynTask) {
this.asynTask = asynTask;
}
@Override
public boolean cancel(boolean mayInterruptIfRunning) {
return asynTask.cancel(mayInterruptIfRunning);
}
@Override
public AsyncTask<?, ?, ?> getTask() {
return asynTask;
}
}
try {
return new TaskImpl(new AsyncHttpTask(context, url, parameters,
callBack, responseType).execute());
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// Get method
public static Task requestGet(Context context, String url,
JSONObject parameters, CallBack callBack, int responseType) {
class TaskImpl implements Task {
public AsyncTask<?, ?, ?> asynTask;
public TaskImpl(AsyncTask<?, ?, ?> asynTask) {
this.asynTask = asynTask;
}
@Override
public boolean cancel(boolean mayInterruptIfRunning) {
return asynTask.cancel(mayInterruptIfRunning);
}
@Override
public AsyncTask<?, ?, ?> getTask() {
return asynTask;
}
}
try {
return new TaskImpl(new AsyncHttpTask(context, "get", url,
parameters, callBack, responseType).execute());
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}