package com.qiwenge.android.utils.http; import android.content.Context; import android.util.Log; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.RequestParams; import com.loopj.android.http.TextHttpResponseHandler; import com.qiwenge.android.constant.Constants; import com.qiwenge.android.entity.Auth; import com.qiwenge.android.utils.FailureUtils; import com.qiwenge.android.utils.LoginManager; import cz.msebera.android.httpclient.Header; public class JHttpClient { private static final String TAG = "JHttpClient"; private static final int CONNECT_TIMEOUT = 20 * 1000; private static AsyncHttpClient httpClient; private static final String HEADER_AUTH = "Authorization"; private static void createHttpCilent() { if (httpClient == null) { httpClient = new AsyncHttpClient(); httpClient.setTimeout(CONNECT_TIMEOUT); httpClient.addHeader("X-Device", Constants.OEPN_UD_ID); } setAuthToken(); } private static void setAuthToken() { if (LoginManager.isLogin()) { Auth auth = LoginManager.getAuth(); httpClient.removeHeader(HEADER_AUTH); httpClient.addHeader(HEADER_AUTH, auth.authToken); } else { httpClient.removeHeader(HEADER_AUTH); } } public static void get(String url, RequestParams params, BaseResponseHandler handler) { get(null, url, params, handler); } /** * HTTP request with GET. * * @param url 地址 * @param params 参数 * @param handler 回调 */ public static void get(final Context context, String url, RequestParams params, final BaseResponseHandler handler) { createHttpCilent(); httpClient.get(url, params, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { Log.i(TAG, "get-onFailure:" + statusCode); if (handler != null) { handler.onFailure(responseString); handler.onFailure(statusCode, responseString); if (context != null) { FailureUtils.handleHttpRequest(context, responseString, statusCode, throwable); } } } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { if (handler != null) { if (statusCode > 300) { handler.onFailure(statusCode, responseString); if (context != null) { FailureUtils.handleHttpRequest(context, responseString, statusCode, null); } } else { handler.onSuccess(responseString); } } } @Override public void onStart() { if (handler != null) handler.onStart(); } @Override public void onFinish() { if (handler != null) handler.onFinish(); } }); } public static void post(String url, RequestParams params, final BaseResponseHandler handler) { createHttpCilent(); httpClient.post(url, params, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { if (handler != null) { handler.onFailure(responseString); handler.onFailure(statusCode, responseString); } } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { if (handler != null) handler.onSuccess(responseString); } @Override public void onStart() { if (handler != null) handler.onStart(); } @Override public void onFinish() { if (handler != null) handler.onFinish(); } }); } public static void put(String url, RequestParams params, final BaseResponseHandler handler) { createHttpCilent(); httpClient.put(url, params, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { if (handler != null) { handler.onFailure(responseString); handler.onFailure(statusCode, responseString); } } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { if (handler != null) handler.onSuccess(responseString); } @Override public void onStart() { if (handler != null) handler.onStart(); } @Override public void onFinish() { if (handler != null) handler.onFinish(); } }); } public static void delete(String url, RequestParams params, final BaseResponseHandler handler) { if (url.contains("?")) { url = url + "&" + params.toString(); } else { url = url + "?" + params.toString(); } createHttpCilent(); httpClient.delete(url, new TextHttpResponseHandler() { @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { if (handler != null) { handler.onFailure(responseString); handler.onFailure(statusCode, responseString); } } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { if (handler != null) handler.onSuccess(responseString); } @Override public void onStart() { if (handler != null) handler.onStart(); } @Override public void onFinish() { if (handler != null) handler.onFinish(); } }); } }