首先在app/build.gradle中导入okhttputils
dependencies {
implementation 'com.zhy:okhttputils:2.6.2'
}
如果请求头中含有中文请进行URLEncoder.encode(deviceBrand, "utf-8")
图片上传
public static void upLoadToServer(Context context,String url ,String filepath, final HttpCallBackListener listener) { if (CheckNetUtil.isNetworkAvailable(context)) { File file = new File(filepath); if (!file.exists()) { MyToast.showMessage("文件不存在,请修改文件路径"); return; } String filename = file.getName(); Map<String, String> params = new HashMap<>(); Map<String, String> headers = getHeadsMap(context); headers.put("Content-Disposition","form-data;filename=" + filename); OkHttpUtils.post() .addFile("mFile", filename, file) .url(url) .params(params) .headers(headers) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { listener.onError(""); } @Override public void onResponse(String response, int id) { listener.onSuccess(MStringUtils.isNullOrEmpty(response)?"":response); } }); }
import android.content.Context; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import com.youpinwallet.ypw.app.MyAppLication; import com.youpinwallet.ypw.app.borrow.activity.AlreadyRegisterActivity; import com.youpinwallet.ypw.bean.HttpResponseBean; import com.youpinwallet.ypw.bean.TokenBean; import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.StringCallback; import java.util.HashMap; import java.util.List; import java.util.Map; import okhttp3.Call; /** * Created by Administrator on 2017/4/26. */ public class PackOkHttpUtils { public PackOkHttpUtils() { } /** * 网络请求 * * @param isPost true Post false Get * @param isDialog true Dialog * @param context context * @param url url * @param map 参数 * @param listener 回调 */ public static void getHttpRequest(final boolean isPost, final boolean isDialog, Context context, String url, Map<String, String> map, final HttpCallBackListener listener) { map.put("version", CommonParamsUtil.getVersion(context)); if (isPost) { postHttp(context, url, map, listener, isDialog); } else { getHttp(context, url, map, listener, isDialog); } } public static void getHttpRequestion(final boolean isDialog, Context context, String url, Map<String, String> map, final HttpCallBackListener listener) { getHttp(context, url, map, listener, isDialog); } public interface HttpCallBackListener { //请求成功 void onSuccess(String response); //请求失败 void onError(String response); } private static void getHttp(final Context context, final String url, final Map<String, String> map, final HttpCallBackListener listener, final boolean isDialog) { if (isDialog) { NewDialogUtils.setNewDialog(context); } if (CheckNetUtil.isNetworkAvailable(context)) { OkHttpUtils.get() .url(url) .headers(getHeadsMap(context)) .params(map) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { NewDialogUtils.dismissNewDialog(); listener.onError(e.getMessage()); } @Override public void onResponse(String response, int id) { NewDialogUtils.dismissNewDialog(); try { HttpResponseBean httpResponseBean = JsonUtils.fromJson(response, HttpResponseBean.class); if (httpResponseBean.getCode() == 50000)//token失效 { getToken(false, isDialog, context, url, map, listener); } else if (httpResponseBean.getCode() == 60000)//RefreshiToken失效 { intentLogin(context); } else { listener.onSuccess(response); } } catch (Exception e) { e.printStackTrace(); } } }); } else { NewDialogUtils.dismissNewDialog(); MyToast.showMessage("请确保网络畅通"); } } private static void getToken(final boolean isPost, final boolean isDialog, final Context context, final String url, final Map<String, String> map, final HttpCallBackListener listener) { if (isDialog) { NewDialogUtils.setNewDialog(context); } if (CheckNetUtil.isNetworkAvailable(context)) { OkHttpUtils.get() .url(ApiUtils.LIGNTING_LOAN_TOKEN_URL) .headers(getTokenHeadsMap()) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { NewDialogUtils.dismissNewDialog(); } @Override public void onResponse(String response, int id) { NewDialogUtils.dismissNewDialog(); try { TokenBean tokenBean = JsonUtils.fromJson(response, TokenBean.class); if (tokenBean.getCode() == Constant.HTTP_SUCCESS)//token失效 { getHttpRequest(isPost, isDialog, context, url, map, listener); } else { intentLogin(context); } } catch (Exception e) { e.printStackTrace(); } } }); } else { NewDialogUtils.dismissNewDialog(); } } private static void postHttp(final Context context, final String url, final Map<String, String> map, final HttpCallBackListener listener, final boolean isDialog) { if (isDialog) { NewDialogUtils.setNewDialog(context); } if (CheckNetUtil.isNetworkAvailable(context)) { OkHttpUtils.post() .url(url) .headers(getHeadsMap(context)) .params(map) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { NewDialogUtils.dismissNewDialog(); listener.onError(e.getMessage()); } @Override public void onResponse(String response, int id) { NewDialogUtils.dismissNewDialog(); try { HttpResponseBean httpResponseBean = JsonUtils.fromJson(response, HttpResponseBean.class); if (httpResponseBean.getCode() == 50000)//token失效 { getToken(true, isDialog, context, url, map, listener); } else if (httpResponseBean.getCode() == 60000)//RefreshiToken失效 { intentLogin(context); } else { listener.onSuccess(response); } } catch (Exception e) { e.printStackTrace(); } } }); } else { NewDialogUtils.dismissNewDialog(); } } private static void intentLogin(Context context) { context.startActivity(new Intent(context, LoginActivity.class)); } public static HashMap<String, String> getHeadsMap(Context context) { HashMap<String, String> headsMap = new HashMap<>(); return headsMap; } public static HashMap<String, String> getTokenHeadsMap() { HashMap<String, String> headsMap = new HashMap<>(); return headsMap; } }