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;
    }
}
相关文章
|
7月前
|
数据库连接 数据库
实现加载驱动、得到数据库对象、关闭资源的代码复用,将代码提取到相应的工具包里边。优化程序
该博客文章展示了如何通过创建工具类`Connectiontools`实现数据库连接、语句执行以及资源关闭的代码复用,以优化程序并提高数据库操作的效率和安全性。
|
前端开发 安全 JavaScript
突破常规的前端技巧与方法(一)
突破常规的前端技巧与方法(一)
105 0
|
JavaScript 前端开发 测试技术
突破常规的前端技巧与方法(四)
突破常规的前端技巧与方法(四)
78 0
|
JSON JavaScript 前端开发
突破常规的前端技巧与方法(二)
突破常规的前端技巧与方法(二)
70 0
|
前端开发 JavaScript 搜索推荐
突破常规的前端技巧与方法(三)
突破常规的前端技巧与方法(三)
194 0
突破常规的前端技巧与方法(三)
|
自然语言处理 IDE Java
被隐藏的细节:编译和链接过程
被隐藏的细节:编译和链接过程
134 0
|
存储 编译器 文件存储
C++语言中多文件组合方式之经典
C++语言中多文件组合方式之经典
255 0
|
数据挖掘 Serverless
差异分析②
样品的无监督聚类 检查基因表达分析最重要的探索性策略之一是多维定标(MDS)图或类似的图。该图以无监督的方式显示了样本之间的相似性和不相似性,以便人们可以了解在进行正式测试之前可以检测差异表达的程度。
1170 0
|
数据可视化 数据挖掘
差异分析③
统计差异基因数目 tfit
1138 0