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<String, String> 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<String, String> 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 (jsonObject.length() == 0 || errno == 0) {
|
httpCallBack.onSuccess(jsonObject.optString("info"), message);
|
} else {
|
httpCallBack.onFail(errno, message);
|
}
|
} else {
|
XLog.e("result jsonObject:");
|
}
|
} catch (JSONException e) {
|
httpCallBack.onFail(503, e.getMessage());
|
XLog.e("result jsonObject:" + 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<String, String> params, final UploadCallBack uploadCallBack, List<File> 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<String, String> params, final UploadCallBack uploadCallBack, Map<String, File> 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);
|
}
|
}
|