package com.moral.yunfushao.httputils; import com.lzy.okgo.OkGo; import com.lzy.okgo.cache.CacheMode; import com.lzy.okgo.callback.StringCallback; import com.lzy.okgo.request.BaseRequest; import com.lzy.okgo.request.PostRequest; import com.moral.andbrickslib.utils.log.XLog; import com.moral.yunfushao.utils.T; import org.json.JSONException; import org.json.JSONObject; import java.io.File; import java.util.List; import java.util.Map; import okhttp3.Call; import okhttp3.Response; /** * 作者: hjzhang * 日期: 2017/3/23. */ public class HttpUtils { /** * Get请求 * @param url * @param params * @param cacheMode * @param showLoadingDialog * @param httpCallBack */ public static void doGet(final String url, Map params, CacheMode cacheMode, final boolean showLoadingDialog, final HttpCallBack httpCallBack) { OkGo.get(url) .params(params) .cacheKey(String.valueOf(url)) .tag(String.valueOf(url)) .cacheMode(cacheMode) .execute(new StringCallback() { @Override public void onBefore(BaseRequest request) { super.onBefore(request); XLog.e("url:" + request.getUrl()); XLog.e("method:" + request.getMethod()); XLog.e("params:" + request.getParams().toString()); if (showLoadingDialog) httpCallBack.showLoadingDialog(); } @Override public void onSuccess(String s, Call call, Response response) { XLog.e("result:" + s); try { JSONObject resJosn= new JSONObject(s); JSONObject jsonObject = resJosn.getJSONObject("data"); int errno = jsonObject.optInt("code"); String message = jsonObject.optString("msg"); if(errno == 0){ httpCallBack.onSuccess(jsonObject.optString("info"),message); }else{ httpCallBack.onFail(errno,message); } } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(Call call, Response response, Exception e) { super.onError(call, response, e); if (response != null) { int httpCode = response.code(); switch (httpCode) { case 400: XLog.e("请求的语法出错"); T.show("请求的语法出错"); break; case 401: XLog.e("未授权"); T.show("未授权"); break; case 403: XLog.e("请求被拒绝"); T.show("请求被拒绝"); break; case 404: XLog.e("请求的接口不存在"); T.show("请求的接口不存在"); break; case 408: XLog.e("请求超时"); T.show("请求超时"); break; case 500: XLog.e("服务器错误"); T.show("服务器错误"); break; case 503: XLog.e("服务器停机或正在维护"); T.show("服务器停机或正在维护"); break; } } } }); } /** * Post请求 * @param url * @param params * @param cacheMode * @param showLoadingDialog * @param httpCallBack */ public static void doPost(final String url, Map params, CacheMode cacheMode, final boolean showLoadingDialog, final HttpCallBack httpCallBack) { OkGo.post(url) .cacheKey(String.valueOf(url)) .tag(String.valueOf(url)) .cacheMode(cacheMode) .params(params, true) .execute(new StringCallback() { @Override public void onBefore(BaseRequest request) { super.onBefore(request); XLog.e("url:" + request.getUrl()); XLog.e("method:" + request.getMethod()); XLog.e("params:" + request.getParams().toString()); if (showLoadingDialog) httpCallBack.showLoadingDialog(); } @Override public void onSuccess(String s, Call call, Response response) { XLog.e("result:" + s); try { JSONObject resJosn= new JSONObject(s); if(resJosn.has("data")) { JSONObject jsonObject = resJosn.getJSONObject("data"); int errno = jsonObject.optInt("code"); String message = jsonObject.optString("msg"); if(errno == 0){ httpCallBack.onSuccess(jsonObject.optString("info"),message); }else{ httpCallBack.onFail(errno,message); } } } catch (JSONException e) { e.printStackTrace(); } } @Override public void onError(Call call, Response response, Exception e) { super.onError(call, response, e); if (response == null) return; int httpCode = response.code(); switch (httpCode) { case 400: T.show("请求的语法出错"); break; case 401: T.show("未授权"); break; case 403: T.show("请求被拒绝"); break; case 404: T.show("请求的接口不存在"); break; case 408: T.show("请求超时"); break; case 500: T.show("服务器错误"); break; case 503: T.show("服务器停机或正在维护"); break; } } }); } /** * 上传文件 * @param url * @param params * @param uploadCallBack * @param files */ public static void uploadFiles(final String url, Map params, final UploadCallBack uploadCallBack, List files) { OkGo.post(url) .params(params) .isMultipart(true) .addFileParams("file", files) .execute(new StringCallback() { @Override public void onBefore(BaseRequest request) { super.onBefore(request); PostRequest re = (PostRequest) request; XLog.e("url:" + re.getUrl()); XLog.e("method:" + re.getMethod()); } @Override public void onSuccess(String s, Call call, Response response) { XLog.e("result:" + s); try { JSONObject resJosn= new JSONObject(s); JSONObject jsonObject = resJosn.getJSONObject("data"); int errno = jsonObject.optInt("code"); String message = jsonObject.optString("msg"); if(errno == 0){ uploadCallBack.onSuccess(jsonObject.optString("info"),message); }else{ uploadCallBack.onFail(message); } } catch (JSONException e) { e.printStackTrace(); } } @Override public void upProgress(long currentSize, long totalSize, float progress, long networkSpeed) { super.upProgress(currentSize, totalSize, progress, networkSpeed); uploadCallBack.onProgress(currentSize, totalSize, progress, networkSpeed); } @Override public void onError(Call call, Response response, Exception e) { super.onError(call, response, e); if (response == null) return; int httpCode = response.code(); switch (httpCode) { case 400: T.show("请求的语法出错"); break; case 401: T.show("未授权"); break; case 403: T.show("请求被拒绝"); break; case 404: T.show("请求的接口不存在"); break; case 408: T.show("请求超时"); break; case 500: T.show("服务器错误"); break; case 503: T.show("服务器停机或正在维护"); break; } } }); } /** * 上传文件 * @param url * @param params * @param uploadCallBack * @param files */ public static void uploadFiles(final String url, Map params, final UploadCallBack uploadCallBack, Map files) { PostRequest postRequest = OkGo.post(url); postRequest.isMultipart(true); for (String key : files.keySet()) { postRequest.params(key, files.get(key)); } postRequest.params(params) .execute(new StringCallback() { @Override public void onBefore(BaseRequest request) { super.onBefore(request); PostRequest re = (PostRequest) request; XLog.e("url:" + re.getUrl()); XLog.e("method:" + re.getMethod()); } @Override public void onSuccess(String s, Call call, Response response) { XLog.e("result:" + s); try { JSONObject resJosn= new JSONObject(s); JSONObject jsonObject = resJosn.getJSONObject("data"); int errno = jsonObject.optInt("code"); String message = jsonObject.optString("msg"); if(errno == 0){ uploadCallBack.onSuccess(jsonObject.optString("info"),message); }else{ uploadCallBack.onFail(message); } } catch (JSONException e) { e.printStackTrace(); } } @Override public void upProgress(long currentSize, long totalSize, float progress, long networkSpeed) { super.upProgress(currentSize, totalSize, progress, networkSpeed); uploadCallBack.onProgress(currentSize, totalSize, progress, networkSpeed); } @Override public void onError(Call call, Response response, Exception e) { super.onError(call, response, e); if (response == null) return; int httpCode = response.code(); switch (httpCode) { case 400: T.show("请求的语法出错"); break; case 401: T.show("未授权"); break; case 403: T.show("请求被拒绝"); break; case 404: T.show("请求的接口不存在"); break; case 408: T.show("请求超时"); break; case 500: T.show("服务器错误"); break; case 503: T.show("服务器停机或正在维护"); break; } } }); } public interface UploadCallBack { void onSuccess(String res, String msg); void onFail(String s); void onProgress(long currentSize, long totalSize, float progress, long networkSpeed); } }