OkHttpUtils的常规使用

简介: 首先在app/build.gradle中导入okhttputils

首先在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;
    }
}
相关文章
|
4月前
|
监控 开发者
确保动态导入模块按正确顺序加载
【10月更文挑战第12天】 在复杂应用开发中,确保动态导入模块按正确顺序加载至关重要,直接影响应用性能、功能和稳定性。本文深入探讨了动态模块加载顺序的影响因素、解决方案及实践案例,提供了详细的策略和方法,帮助开发者有效管理模块加载顺序,提升应用质量。
|
8月前
|
监控 Java
记录页面修改差异(java注解实现)
记录页面修改差异(java注解实现)
|
前端开发 安全 JavaScript
突破常规的前端技巧与方法(一)
突破常规的前端技巧与方法(一)
104 0
|
JavaScript 前端开发 测试技术
突破常规的前端技巧与方法(四)
突破常规的前端技巧与方法(四)
75 0
|
JSON JavaScript 前端开发
突破常规的前端技巧与方法(二)
突破常规的前端技巧与方法(二)
69 0
|
9月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
256 0
|
9月前
|
分布式计算 并行计算 算法
图计算中的性能优化有哪些方法?请举例说明。
图计算中的性能优化有哪些方法?请举例说明。
76 0
|
前端开发 JavaScript 搜索推荐
突破常规的前端技巧与方法(三)
突破常规的前端技巧与方法(三)
192 0
突破常规的前端技巧与方法(三)
|
消息中间件 JavaScript 小程序
接了个变态需求:给定一个接口,要用户自定义动态实现并上传热部署,怎么搞?
接了个变态需求:给定一个接口,要用户自定义动态实现并上传热部署,怎么搞?
|
UED
网站性能:不同加载类型的差别
网站性能:不同加载类型的差别
83 0
网站性能:不同加载类型的差别