OkGo二次封装工具类

2023-10-27

public class OkGoUtils {

    /**
     * 必须在Application中初始化
     * @param context Application对象
     * @author LH
     * created at 2019/9/25 10:23
     */
    public static void init(Application context){
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkGo");
        loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);        //log打印级别,决定了log显示的详细程度
        loggingInterceptor.setColorLevel(Level.INFO);                               //log颜色级别,决定了log在控制台显示的颜色
        builder.addInterceptor(loggingInterceptor);                                 //添加OkGo默认debug日志
        builder.readTimeout(10000, TimeUnit.MILLISECONDS);      //全局的读取超时时间
        builder.writeTimeout(10000, TimeUnit.MILLISECONDS);     //全局的写入超时时间
        builder.connectTimeout(10000, TimeUnit.MILLISECONDS);   //全局的连接超时时间
        OkGo.getInstance().init(context)                           //必须调用初始化
                .setOkHttpClient(builder.build())               //建议设置OkHttpClient,不设置会使用默认的
                .setCacheMode(CacheMode.NO_CACHE)               //全局统一缓存模式,默认不使用缓存,可以不传
                .setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE)   //全局统一缓存时间,默认永不过期,可以不传
                .setRetryCount(0);
    }

    /**
     * get请求
     * @param context 当前对象
     * @param url 请求地址
     * @param bodyValue body键值对
     * @param onRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpGetRequest(final Context context, final String url, HashMap<String,Object> bodyValue, final OnRequestExecute onRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            GetRequest<String> params = OkGo.<String>get(url).tag(context.getApplicationContext());
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            params.execute(new StringCallback() {
                @Override
                public void onStart(Request<String, ? extends Request> request) {
                    super.onStart(request);
                    if(onRequestExecute != null){
                        onRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<String> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求结果:"+response.body());
                    if(onRequestExecute != null){
                        onRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onRequestExecute != null){
                        onRequestExecute.onError(response);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * get请求
     * @param context 当前对象
     * @param url 请求地址
     * @param headValue head键值对
     * @param bodyValue body键值对
     * @param onRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpGetRequest(final Context context, final String url, HashMap<String,Object> headValue, HashMap<String,Object> bodyValue, final OnRequestExecute onRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            GetRequest<String> params = OkGo.<String>get(url).tag(context.getApplicationContext());
            if(headValue != null && headValue.size() != 0) {
                LogUtils.Logs_e("header为:"+headValue.toString());
                Set<Map.Entry<String, Object>> headSet = headValue.entrySet();
                HttpHeaders headers = new HttpHeaders();
                for (Map.Entry<String, Object> entry : headSet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        headers.put(entry.getKey(), String.valueOf(objectValue));
                    } else {
                        LogUtils.Logs_e("header中有不支持的类型");
                    }
                }
                params.headers(headers);
            }
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }

            params.execute(new StringCallback() {
                @Override
                public void onStart(Request<String, ? extends Request> request) {
                    super.onStart(request);
                    if(onRequestExecute != null){
                        onRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<String> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求结果:"+response.body());
                    if(onRequestExecute != null){
                        onRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onRequestExecute != null){
                        onRequestExecute.onError(response);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * post请求
     * @param context 当前对象
     * @param url 请求地址
     * @param bodyValue body键值对
     * @param onRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpPostRequest(final Context context, final String url, HashMap<String,Object> bodyValue, final OnRequestExecute onRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            PostRequest<String> params = OkGo.<String>post(url).tag(context.getApplicationContext());
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            params.execute(new StringCallback() {
                @Override
                public void onStart(Request<String, ? extends Request> request) {
                    super.onStart(request);
                    if(onRequestExecute != null){
                        onRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<String> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求结果:"+response.body());
                    if(onRequestExecute != null){
                        onRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onRequestExecute != null){
                        onRequestExecute.onError(response);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * post请求
     * @param context 当前对象
     * @param url 请求地址
     * @param headValue head键值对
     * @param bodyValue body键值对
     * @param onRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpPostRequest(final Context context, final String url, HashMap<String,Object> headValue, HashMap<String,Object> bodyValue, final OnRequestExecute onRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            PostRequest<String> params = OkGo.<String>post(url).tag(context.getApplicationContext());
            if(headValue != null && headValue.size() != 0) {
                LogUtils.Logs_e("header为:"+headValue.toString());
                HttpHeaders headers = new HttpHeaders();
                Set<Map.Entry<String, Object>> headSet = headValue.entrySet();
                for (Map.Entry<String, Object> entry : headSet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        headers.put(entry.getKey(), String.valueOf(objectValue));
                    } else {
                        LogUtils.Logs_e("header中有不支持的类型");
                    }
                }
                params.headers(headers);
            }
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            params.execute(new StringCallback() {
                @Override
                public void onStart(Request<String, ? extends Request> request) {
                    super.onStart(request);
                    if(onRequestExecute != null){
                        onRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<String> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求结果:"+response.body());
                    if(onRequestExecute != null){
                        onRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onRequestExecute != null){
                        onRequestExecute.onError(response);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 下载请求
     * @param context 当前对象
     * @param downloadDir 下载到的文件夹目录
     * @param saveName 保存成的文件名称
     * @param url 请求地址
     * @param bodyValue body键值对
     * @param onDownloadRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpDownloadRequest(final Context context, String downloadDir, String saveName, final String url, HashMap<String,Object> bodyValue, final OnDownloadRequestExecute onDownloadRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            GetRequest<File> params = OkGo.<File>get(url).tag(context.getApplicationContext());
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            File file = new File(downloadDir,saveName);
            if (file.exists()) {
                file.delete();
            }
            params.execute(new FileCallback(downloadDir,saveName) {
                @Override
                public void onStart(Request<File, ? extends Request> request) {
                    if(onDownloadRequestExecute != null){
                        onDownloadRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<File> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求成功");
                    if(onDownloadRequestExecute != null){
                        onDownloadRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<File> response) {
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onDownloadRequestExecute != null){
                        onDownloadRequestExecute.onError(response);
                    }
                }

                @Override
                public void downloadProgress(Progress progress) {
                    if(onDownloadRequestExecute != null){
                        onDownloadRequestExecute.downloadProgress(progress);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 下载请求
     * @param context 当前对象
     * @param downloadDir 下载到的文件夹目录
     * @param saveName 保存成的文件名称
     * @param url 请求地址
     * @param headValue head键值对
     * @param bodyValue body键值对
     * @param onDownloadRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpDownloadRequest(final Context context, String downloadDir, String saveName, final String url, HashMap<String,Object> headValue, HashMap<String,Object> bodyValue, final OnDownloadRequestExecute onDownloadRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            GetRequest<File> params = OkGo.<File>get(url).tag(context.getApplicationContext());
            if(headValue != null && headValue.size() != 0) {
                LogUtils.Logs_e("header为:"+headValue.toString());
                HttpHeaders headers = new HttpHeaders();
                Set<Map.Entry<String, Object>> headSet = headValue.entrySet();
                for (Map.Entry<String, Object> entry : headSet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        headers.put(entry.getKey(), String.valueOf(objectValue));
                    } else {
                        LogUtils.Logs_e("header中有不支持的类型");
                    }
                }
                params.headers(headers);
            }
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            File file = new File(downloadDir,saveName);
            if (file.exists()) {
                file.delete();
            }
            params.execute(new FileCallback(downloadDir,saveName) {
                @Override
                public void onStart(Request<File, ? extends Request> request) {
                    if(onDownloadRequestExecute != null){
                        onDownloadRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<File> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求成功");
                    if(onDownloadRequestExecute != null){
                        onDownloadRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<File> response) {
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onDownloadRequestExecute != null){
                        onDownloadRequestExecute.onError(response);
                    }
                }

                @Override
                public void downloadProgress(Progress progress) {
                    if(onDownloadRequestExecute != null){
                        onDownloadRequestExecute.downloadProgress(progress);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 上传请求
     * @param context 当前对象
     * @param url 请求地址
     * @param bodyValue body键值对
     * @param onUploadRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpUploadRequest(final Context context, final String url, HashMap<String,Object> bodyValue, final OnUploadRequestExecute onUploadRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            PostRequest<String> params = OkGo.<String>post(url).tag(context.getApplicationContext());
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    }else if (objectValue instanceof File) {
                        params.params(entry.getKey(), (File)objectValue);
                    }else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            params.execute(new StringCallback() {
                @Override
                public void onStart(Request<String, ? extends Request> request) {
                    super.onStart(request);
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<String> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求结果:"+response.body());
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onError(response);
                    }
                }

                @Override
                public void uploadProgress(Progress progress) {
                    super.uploadProgress(progress);
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.uploadProgress(progress);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 上传请求
     * @param context 当前对象
     * @param url 请求地址
     * @param headValue head键值对
     * @param bodyValue body键值对
     * @param onUploadRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpUploadRequest(final Context context, final String url, HashMap<String,Object> headValue, HashMap<String,Object> bodyValue, final OnUploadRequestExecute onUploadRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            PostRequest<String> params = OkGo.<String>post(url).tag(context.getApplicationContext());
            if(headValue != null && headValue.size() != 0) {
                LogUtils.Logs_e("header为:"+headValue.toString());
                HttpHeaders headers = new HttpHeaders();
                Set<Map.Entry<String, Object>> headSet = headValue.entrySet();
                for (Map.Entry<String, Object> entry : headSet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        headers.put(entry.getKey(), String.valueOf(objectValue));
                    } else {
                        LogUtils.Logs_e("header中有不支持的类型");
                    }
                }
                params.headers(headers);
            }
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else if (objectValue instanceof File) {
                        params.params(entry.getKey(), (File)objectValue);
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            params.execute(new StringCallback() {
                @Override
                public void onStart(Request<String, ? extends Request> request) {
                    super.onStart(request);
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<String> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求结果:"+response.body());
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onError(response);
                    }
                }
                @Override
                public void uploadProgress(Progress progress) {
                    super.uploadProgress(progress);
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.uploadProgress(progress);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 上传请求
     * @param context 当前对象
     * @param url 请求地址
     * @param bodyValue body键值对
     * @param filesKey 批量上传的键(对个文件对应同一个key)
     * @param uploadFiles 批量上传的文件数组
     * @param onUploadRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpUploadRequest(final Context context, final String url, HashMap<String,Object> bodyValue, String filesKey, ArrayList<File> uploadFiles, final OnUploadRequestExecute onUploadRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            PostRequest<String> params = OkGo.<String>post(url).tag(context.getApplicationContext());
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else if (objectValue instanceof File) {
                        params.params(entry.getKey(), (File)objectValue);
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            params.addFileParams(filesKey,uploadFiles);
            params.execute(new StringCallback() {
                @Override
                public void onStart(Request<String, ? extends Request> request) {
                    super.onStart(request);
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<String> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求结果:"+response.body());
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onError(response);
                    }
                }
                @Override
                public void uploadProgress(Progress progress) {
                    super.uploadProgress(progress);
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.uploadProgress(progress);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 上传请求
     * @param context 当前对象
     * @param url 请求地址
     * @param headValue head键值对
     * @param bodyValue body键值对
     * @param filesKey 批量上传的键(对个文件对应同一个key)
     * @param uploadFiles 批量上传的文件数组
     * @param onUploadRequestExecute 请求完成回调
     * @author LH
     * created at 2019/9/20 10:48
     */
    public static void httpUploadRequest(final Context context, final String url,HashMap<String,Object> headValue,  HashMap<String,Object> bodyValue, String filesKey, ArrayList<File> uploadFiles, final OnUploadRequestExecute onUploadRequestExecute){
        try {
            LogUtils.Logs_e("http请求地址:"+url);
            PostRequest<String> params = OkGo.<String>post(url).tag(context.getApplicationContext());
            if(headValue != null && headValue.size() != 0) {
                LogUtils.Logs_e("header为:"+headValue.toString());
                HttpHeaders headers = new HttpHeaders();
                Set<Map.Entry<String, Object>> headSet = headValue.entrySet();
                for (Map.Entry<String, Object> entry : headSet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        headers.put(entry.getKey(), String.valueOf(objectValue));
                    } else {
                        LogUtils.Logs_e("header中有不支持的类型");
                    }
                }
                params.headers(headers);
            }
            if(bodyValue != null && bodyValue.size() != 0) {
                LogUtils.Logs_e("body为:"+bodyValue.toString());
                Set<Map.Entry<String, Object>> bodySet = bodyValue.entrySet();
                for (Map.Entry<String, Object> entry : bodySet) {
                    Object objectValue = entry.getValue();
                    if (objectValue instanceof String) {
                        params.params(entry.getKey(), String.valueOf(objectValue));
                    } else if (objectValue instanceof Integer) {
                        params.params(entry.getKey(), Integer.parseInt(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Float) {
                        params.params(entry.getKey(), Float.parseFloat(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Double) {
                        params.params(entry.getKey(), Double.parseDouble(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Long) {
                        params.params(entry.getKey(), Long.parseLong(String.valueOf(objectValue)));
                    } else if (objectValue instanceof Character) {
                        params.params(entry.getKey(), (Character) objectValue);
                    } else if (objectValue instanceof Boolean) {
                        params.params(entry.getKey(), Boolean.parseBoolean(String.valueOf(objectValue)));
                    } else if (objectValue instanceof File) {
                        params.params(entry.getKey(), (File)objectValue);
                    } else {
                        LogUtils.Logs_e("body中有不支持的类型");
                    }
                }
            }
            params.addFileParams(filesKey,uploadFiles);
            params.execute(new StringCallback() {
                @Override
                public void onStart(Request<String, ? extends Request> request) {
                    super.onStart(request);
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onStart();
                    }
                }

                @Override
                public void onSuccess(Response<String> response) {
                    LogUtils.Logs_e("接口"+url.substring(url.lastIndexOf("/"))+"请求结果:"+response.body());
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onSuccess(response);
                    }
                }

                @Override
                public void onError(Response<String> response) {
                    super.onError(response);
                    LogUtils.Logs_e("地址:"+url+"请求失败");
                    if(response != null && response.getException() != null) {
                        LogUtils.Logs_e("原因:"+response.getException().toString());
                    }
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.onError(response);
                    }
                }
                @Override
                public void uploadProgress(Progress progress) {
                    super.uploadProgress(progress);
                    if(onUploadRequestExecute != null){
                        onUploadRequestExecute.uploadProgress(progress);
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 请求回调
     * @author LH
     * created at 2019/9/20 10:43
     */
    public interface OnRequestExecute{
        void onStart();
        void onSuccess(Response<String> response);
        void onError(Response<String> response);
    }

    /**
     * 下载请求回调
     * @author LH
     * created at 2019/9/20 10:43
     */
    public interface OnDownloadRequestExecute{
        void onStart();
        void onSuccess(Response<File> response);
        void onError(Response<File> response);
        void downloadProgress(Progress progress);
    }

    /**
     * 上传请求回调
     * @author LH
     * created at 2019/9/20 10:43
     */
    public interface OnUploadRequestExecute{
        void onStart();
        void onSuccess(Response<String> response);
        void onError(Response<String> response);
        void uploadProgress(Progress progress);
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OkGo二次封装工具类 的相关文章

  • C# 中的委托和事件(详解)

    C 中的委托和事件 委托和事件在 NET Framework 中的应用非常广泛 然而 较好地理解委托和事件对很多接触 C 时间不长的人来说并不容易 它们就像是一道槛儿 过了这个槛的人 觉得真是太容易了 而没有过去的人每次见到委托和事件就觉得
  • opencv图像处理及视频处理基本操作

    计算机眼中的图像由一个个像素组成 每个像素点的值在0 255之间 代表像素点的亮度 0为最暗 255为最亮 通常彩色图为三通道 灰度图 黑白图 为单通道 彩色图像包括三个颜色通道 B G R 分别表示蓝 绿 红 目录 1 图像的表示 2 图
  • html超链接打开共享文件夹,访问共享文件夹的方法

    在局域网 我们经常会用到共享文件 这样在多人传输文件跟共享资料上就会又方便又快捷啦 在这里教大家怎样建立跟访问共享文件夹 打开控制面板 找到防火墙 点击打开防火墙 弹出防火墙设置面板 我们选择关闭防火墙 虽然写不推荐 但我们可以无视它 然后
  • 抖音自动生成文字_文字动画怎么制作?这里教你一键制作抖音爆款文字视频

    现在很多人都会在闲暇时间打开抖音刷刷视频 经常会看到很多文字视频特别有趣 配上动感的节奏 文字立刻鲜活起来 如何才能制作出这样的文字视频呢 今天给大家介绍一种全网最简单的抖音文字视频制作方法 不需要会使用AE 甚至也不需要你打字 直接语音识
  • 关于python基础,90%的人不知道这些。但你一定得清楚。

    经过前几次的学习我们已经安装好Python解释器 搭建好顺手的IDE环境 那么接下来 我们就正式的开始一些列Python知识的学习 代码敲起来 一 字面量 字面量是以变量或常量给出的原始数据 在Python中 有多种类型的字面量 如数字字面
  • linux中断实验

    文章目录 一 linux中断简介 1 linux中断API函数 1 中断号 2 request irq函数 3 free irq 4 中断处理函数 5 中断使能与禁止函数 2 上半部与下半部 1 软中断 2 tasklet 3 工作队列 3
  • jboss源码中片段分析

    package com test import java security AccessController import java security PrivilegedAction import java util ArrayList
  • QRegExp

    d 非负整数 正整数 0 0 9 1 9 0 9 正整数 d 0 非正整数 负整数 0 0 9 1 9 0 9 负整数 d 整数 d d 非负浮点数 正浮点数 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1
  • post使用方法以及有道API

    import requests import json headers User Agent Mozilla 5 0 Windows NT 10 0 Win64 x64 AppleWebKit 537 36 KHTML like Gecko
  • Unity人物前进的方向和相机朝向一致

    鼠标点击滑动移动相机 代码 using UnityEngine using System Collections This is an improved orbit script based on the MouseOrbitImprove
  • 数据结构-图的应用算法

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 最小生成树 1 1 Prim算法 1 2 Kruskal算法 二 最短路径 2 1 Dijkstra算法 2 2 Floyd算法 三 有向无环图描述表达式 四

随机推荐

  • Angular 使用MockJs

    今天要做模拟数据 但是发现没有说这个问题的帖子 特此记录分享一下 如果有用Angular的朋友刚好遇到这个问题 希望可以帮你解决 第一步 安装mockjs npm install mockjs save 第二步 引入mockjs 在 ang
  • Python学习笔记(十三)————循环语句相关

    目录 1 while循环 2 for循环 3 range语句 4 while与for区别 5 循环中断 break和continue 1 while循环 1 while的条件需得到布尔类型 True表示继续循环 False表示结束循环 2
  • 「OceanBase 4.1 体验」OceanBase 4.1社区版的部署及使用体验

    OceanBase 4 1 体验 OceanBase 4 1社区版的部署及使用体验 一 前言 1 1 本次实践介绍 1 2 本次实践目的 二 准备环境资源 2 1 部署前需准备工作 2 2 本地环境规划 三 部署Docker环境 3 1 安
  • 栈,堆,堆栈,队列

    堆栈都是一种数据项按序排列的数据结构 只能在一端 称为栈顶 top 对数据项进行插入和删除 要点 堆 顺序随意 栈 后进先出 Last In First Out 堆 什么是堆 又该怎么理解呢 堆通常是一个可以被看做一棵树的数组对象 堆总是满
  • ViewPager2 + SmartRefreshLayout + RecyclerView出现底部自动回弹显示问题,显示不全

    ViewPager2 SmartRefreshLayout RecyclerView出现底部自动回弹显示问题 显示不全 出现这个问题的原因是RecyclerView的高度超过了父控件的高度 我也不知道为啥 只是测试出来的结果 解决办法 pr
  • 【python基础知识】15.编码基础知识

    编码基础知识 前言 编码 二进制 编码表 encode 和decode 前言 在你的网络冲浪生涯里 我想你或多或少有这样的疑问 为什么传说中只能读懂0和1的计算机能显示如此五花八门的内容 为什么明明办的100兆的宽带 撑死就只有10几兆的下
  • ubuntu18.04 android studio无法使用中文输入法

    1 找到电脑安装的输入法框架 打开系统输入法 查看当前选择的输入法框架 这说明当前使用的是ibus 输入法框架 2 设置studio sh 使用输入法框架 在studio sh 的文件注释行下面 该文件的最前明 添加输入法 export X
  • iOS获取App ipa包 2019-02-12

    转自 https www jianshu com p 8eaa1dd20370 首先 去Mac上的App Store下载Apple Configurator 2 然后把iphone连接上Mac 点击Apple Configurator 2
  • 汽配企业WMS系统:提升作业效率与过程管控

    随着汽配企业竞争的加剧和业务模式的复杂化 许多企业意识到提高仓库作业效率和成本控制能力是企业成功的关键 因此 越来越多的企业选择引入WMS仓储管理系统 然而 汽配企业产品复杂 且从业的人员大部分是老一辈人员 内部信息化程度低 因此需要建立更
  • 代码随想录算法训练营第一天

    LeetCode704 力扣 基础二分法 考虑如何不让数据溢出 区间如何切换 LeetCode34 力扣寻找最左区间 和 最右区间 套路和基础二分法类似 就是要在找到target的时候继续向左或者向右移动 package algor tra
  • Matlab绘制折线图及局部放大图

    Matlab可完成折线图绘制及局部放大 需下载 MATLAB 交互式的局部放大图 知乎 代码开源 非常好用 十分感谢 需求 如下图所示 一 仅绘制折线图 代码如下 x 1 10 x轴上的数据 开始 终止值 a 12008 68032 171
  • Java手写LinkedList和拓展

    Java手写LinkedList和拓展 思维导图 mermaid svg K0RTlFFvnikDRvqp font family trebuchet ms verdana arial sans serif font size 16px f
  • 部署农产品溯源系统的步骤

    系统模块和技术 此系统有四个模块 blockchain trace bcnetwork blockchain trace applets blockchain trace pc blockchain trace basic data 本系统
  • [YOLO专题-4]:YOLO V1 - 网络结构、原理、基本思想的全新、全面、通俗、结构化讲解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122156426 目录 第1章 YOL
  • 小程序中的webSocket介绍以及使用

    什么是 webStoket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 WebSocket 使得客户端和服务器之间的数据交换变得更加简单 允许服务端主动向客户端推送数据 在 WebSocke
  • 剑指Offer - 面试题47:礼物的最大价值

    题目 在一个m n的棋盘的每一格都放有一个礼物 每个礼物都有一定的价值 价值大于0 你可以从棋盘的左上角开始拿格子里的礼物 并每次向左向下移动一格 直到到达棋盘的右下角 给定一个棋盘及其上面的礼物 请计算你最多能拿到多少价值的礼物 例如 在
  • 关于vue开发时,项目结构布局总结---(经验篇)

    最近结束了一个项目 总结下这个项目结构 先看下这个项目大致布局结构 首页 图1 个人中心 图2 先来看图1 分为头部 内容 底部 三部分 代码结构如下 然后这个配置好的文件 当然在配置路由里使用啦 这些路由配置好后 开始整合 在main j
  • 根据三角形三边长度,判断为直角三角形、钝角三角形还是锐角三角形

    1 首先输入三角形三边 2 判断是否构成三角形 任意两边和大于第三边 如果不是则输出不是三角形 3 如若是三角形判断为何种三角形 任意一边平方等于其余两边的平方和为直角三角形 任意一边平方大于其余两边的平方和则为钝角三角形 否则为锐角三角形
  • 安全运维-如何在Kubernetes中使用注释对ingress-nginx及后端应用进行安全加固配置实践...

    关注 WeiyiGeek 公众号 设为 特别关注 每天带你玩转网络安全运维 应用开发 物联网IOT学习 本章目录 0x08 Kubernetes中ingress nginx安全配置 1 配置指定的 Ingress Class 2 安全配置之
  • OkGo二次封装工具类

    public class OkGoUtils 必须在Application中初始化 param context Application对象 author LH created at 2019 9 25 10 23 public static