package com.sets.speedtest.manager.http; import org.apache.http.Header; import org.apache.http.entity.StringEntity; import org.json.JSONObject; import android.content.Context; import com.loopj.android.http.AsyncHttpClient; import com.loopj.android.http.JsonHttpResponseHandler; import com.loopj.android.http.PersistentCookieStore; import com.loopj.android.http.RequestHandle; import com.loopj.android.http.RequestParams; import com.loopj.android.http.ResponseHandlerInterface; import com.sets.speedtest.common.CommLoading; import com.sets.speedtest.utils.ViewUtils; /** * HTTP请求客户端 * * @author : lipan * @create_time : 2014年4月19日 上午11:36:18 * @desc : HTTP请求客户端 * @update_time : * @update_desc : * */ public class WSClient { public static final String CHARSET = "UTF-8"; public static final int TIMEOUT = 25000; public static final String CONTENT_TYPE_JSON = "application/json;charset=utf-8"; private static AsyncHttpClient client; public static void reset(Context context) { // 如果已经创建了客户端,则取消所有进行中的客户端 if (client != null) client.cancelRequests(context, true); client = new AsyncHttpClient(); client.setTimeout(TIMEOUT); client.setCookieStore(new PersistentCookieStore(context)); } public static void clear(Context context) { PersistentCookieStore cookieStore = new PersistentCookieStore(context); cookieStore.clear(); } public static void cancel(Context context) { if (client != null) client.cancelRequests(context, true); } /** * 发送http请求,返回json数据 * * @param context * @param url * @param timeout * @param data * @param responseHandler * @return */ public static RequestHandle postForm(Context context, final String url, RequestParams data, final BaseResponseHandler responseHandler) { try { // 检查网络连接 if (!ViewUtils.checkNetworkWithToast(context)) { return null; } if (data == null) { data = new RequestParams(); } // 时间戳 data.put("timestamp", System.currentTimeMillis()); JsonHttpResponseHandler jsonHttpResponseHandler = new JsonHttpResponseHandler() { @Override public void onStart() { responseHandler.onPrepare(); responseHandler.onStart(); } @Override public void onSuccess(int statusCode, Header[] headers, JSONObject response) { responseHandler.onSuccess(statusCode, response); } @Override public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { responseHandler.onFailure(throwable, ""); } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { responseHandler.onFailure(throwable, ""); } @Override public void onFinish() { CommLoading.dismiss(); // 隐藏Loading responseHandler.onFinish(); } }; return client.post(context, url, data, jsonHttpResponseHandler); } catch (Exception e) { responseHandler.onFailure(e, ""); } return null; } public static RequestHandle postJson(Context context, final String url, StringEntity data, final BaseResponseHandler responseHandler) { try { // 检查网络连接 if (!ViewUtils.checkNetworkWithToast(context)) { return null; } // 时间戳 JsonHttpResponseHandler jsonHttpResponseHandler = new JsonHttpResponseHandler() { @Override public void onStart() { responseHandler.onPrepare(); responseHandler.onStart(); } @Override public void onSuccess(int statusCode, Header[] headers, JSONObject response) { responseHandler.onSuccess(statusCode, response); } @Override public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) { responseHandler.onFailure(throwable, ""); } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { responseHandler.onFailure(throwable, ""); } @Override public void onFinish() { CommLoading.dismiss(); // 隐藏Loading responseHandler.onFinish(); } }; return client.post(context, url, data, CONTENT_TYPE_JSON, jsonHttpResponseHandler); } catch (Exception e) { responseHandler.onFailure(e, ""); } return null; } /** * get请求 * * @param url * @param handlerInterface * @return */ public static RequestHandle get(String url, ResponseHandlerInterface handlerInterface) { return client.get(url, handlerInterface); } }