okHttp 请求封装

import android.os.Build;
import android.os.Environment;

import com.navimentum.app.BaseApplication;
import com.navimentum.app.util.JsonUtils;
import com.navimentum.app.util.LogUtil;
import com.navimentum.app.util.SPUtil;
import com.navimentum.app.util.StringUtil;
import com.navimentum.app.util.ToastUtils;
import com.navimentum.app.util.ToolsUtil;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.request.RequestCall;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

/**
 * 自定义封装 okhttp
 */

public class JOkHttpClient {

    protected final String TAG = this.getClass().getSimpleName();

    private RequestCall call;

    public Map checkParamter(Map paramter) {
        if (null == paramter) paramter = new HashMap();
//        if (!paramter.containsKey("userId")) {
//            paramter.put("userId", SPUtil.getString("userId", ""));
//        }
//        if (!paramter.containsKey("token")) {
//            paramter.put("token", SPUtil.getString("token", ""));
//        }
        if (StringUtil.isEmpty(SPUtil.getString("token", ""))) {
            return paramter;
        }
        paramter.put("authorization", SPUtil.getString("userId", "") + "_" + SPUtil.getString("token", ""));
        return paramter;
    }

    public String checkUrl(String url) {
        if (StringUtil.isEmpty(url)) return "";
        if (!url.startsWith("http://")) url = RestURL.HOST + url;
        return url;
    }

    public void post(String url, Map paramter, JsonCallback callBack) {
        if (StringUtil.isEmpty(url)) return;
        url = checkUrl(url);
        Map map = checkParamter(paramter);
        LogUtil.e("url map:", url + "?" + JsonUtils.toJSONStr(map));
        call = OkHttpUtils.post().url(url).params(map).build();
        call.execute(callBack);
    }

    public void postString(String url, Map<String, String> paramter, JsonCallback callBack) {
        if (StringUtil.isEmpty(url)) return;
        url = checkUrl(url);
        Map map = checkParamter(paramter);
        StringBuffer sb = new StringBuffer();
        //设置表单参数
        for (String key : paramter.keySet()) {
            sb.append(key + "=" + paramter.get(key) + "&");
        }
        LogUtil.e("url map:", url + "?" + sb.toString());
        call = OkHttpUtils.postString().url(url).content(sb.toString()).build();
        call.execute(callBack);
    }

    public void postString(String url, Map<String, String> paramter, ReportCallback callBack) {
        if (StringUtil.isEmpty(url)) return;
        url = checkUrl(url);
        Map map = checkParamter(paramter);
        StringBuffer sb = new StringBuffer();
        //设置表单参数
        for (String key : paramter.keySet()) {
            sb.append(key + "=" + paramter.get(key) + "&");
        }
        LogUtil.e("url map:", url + "?" + sb.toString());
        call = OkHttpUtils.postString().url(url).content(sb.toString()).build();
        call.execute(callBack);
    }


    public void get(String url, Map paramter, JsonCallback callBack) {
        if (StringUtil.isEmpty(url)) return;
        url = checkUrl(url);
        Map map = checkParamter(paramter);
        call = OkHttpUtils.get().url(url).params(map).build();
        call.execute(callBack);
    }

    public void postFile(String url, String path, JsonCallback callBack) {
        if (StringUtil.isEmpty(url)) return;
        url = checkUrl(url);
//        File file = new File(Environment.getExternalStorageDirectory(), "messenger_01.png");
        File file = new File(path);
        if (!file.exists()) {
//            Toast.makeText(MainActivity.this, "文件不存在,请修改文件路径", Toast.LENGTH_SHORT).show();
            return;
        }
        call = OkHttpUtils.postFile().url(url).file(file).params(checkParamter(null)).build();
        call.execute(callBack);
    }

    public void postFile(String url, File file, JsonCallback callBack) {
        if (StringUtil.isEmpty(url)) return;
        url = checkUrl(url);
        if (!file.exists()) {
            ToastUtils.showLong("文件不存在,请修改文件路径");
            return;
        }
        call = OkHttpUtils.post().url(url).addHeader("authorization", SPUtil.getString("userId", "") + "_" + SPUtil.getString("token", "")).addFile("file", file.getName(), file).build();
        call.execute(callBack);
    }

    public void multiFileUpload(String url, Map<String, String> paramter, JsonCallback
            callBack) {
        if (StringUtil.isEmpty(url)) return;
        url = checkUrl(url);
        if (null == paramter) return;

        for (Map.Entry<String, String> entry : paramter.entrySet()) {
            //Map.entry<Integer,String> 映射项(键-值对)  有几个方法:用上面的名字entry
            //entry.getKey() ;entry.getValue(); entry.setValue();
            //map.entrySet()  返回此映射中包含的映射关系的 Set视图。
            System.out.println("key= " + entry.getKey() + " and value= "
                    + entry.getValue());
        }

        File file = new File(Environment.getExternalStorageDirectory(), "messenger_01.png");
        File file2 = new File(Environment.getExternalStorageDirectory(), "test1#.txt");
        if (!file.exists()) {
//            Toast.makeText(MainActivity.this, "文件不存在,请修改文件路径", Toast.LENGTH_SHORT).show();
            return;
        }
        Map<String, String> params = new HashMap<>();
        params.put("password", "123");

        call = OkHttpUtils.post()
                .addFile("mFile", "messenger_01.png", file)
                .addFile("mFile", "test1.txt", file2)
                .url(url)
                .params(params)
                .build();
        call.execute(callBack);
    }

    //    @Override
    public void cancle() {
        if (call != null) {
            call.cancel();
        }
    }

    //    @Override
    public boolean isRunning() {
        return call != null && !call.getCall().isExecuted();
    }

//    public void downloadFile(String url, FileCallBack callBack) {
//        if (StringUtil.isEmpty(url)) return;
//        url = checkUrl(url);
//        OkHttpUtils
//                .get()
//                .url(url)
//                .build()
//                .execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), "gson-2.2.1.jar")//
//                {
//
//                    @Override
//                    public void onBefore(Request request, int id) {
//                    }
//
//                    @Override
//                    public void inProgress(float progress, long total, int id) {
////                        mProgressBar.setProgress((int) (100 * progress));
//                        LogUtil.d(TAG, "inProgress :" + (int) (100 * progress));
//                    }
//
//                    @Override
//                    public void onError(Call call, Exception e, int id) {
//                        LogUtil.e(TAG, "onError :" + e.getMessage());
//                        if (null != httpCallBack) httpCallBack.onError(e.getMessage());
//                    }
//
//                    @Override
//                    public void onResponse(File file, int id) {
//                        LogUtil.e(TAG, "onResponse :" + file.getAbsolutePath());
//                        if (null == file) {
//                            httpCallBack.onError(BaseApplication.getResourceString(R.string.network_data_none));
//                            return;
//                        }
//                        if (null != httpCallBack) httpCallBack.onSuccess(file);
//                    }
//                });
//    }

    public void report(String url, String type, String code, String ext, ReportCallback callback) {
        Map inTrx = new HashMap();
        inTrx.put("msg", ext);
        inTrx.put("url", url);
        inTrx.put("param", "");
        inTrx.put("user_id", SPUtil.getString("userId", ""));
        inTrx.put("iswifi", ToolsUtil.isWifiConnected(BaseApplication.getContext()) ? "true" : "false");
        inTrx.put("wifi_ssid", ToolsUtil.getWifiId(BaseApplication.getContext()));
        inTrx.put("mobile", ToolsUtil.getSystemModel());
        inTrx.put("sdk_version", Build.VERSION.SDK_INT + "");
        inTrx.put("os_version", ToolsUtil.getSystemVersion());
        inTrx.put("app_version", ToolsUtil.getVersion(BaseApplication.getContext()));
        inTrx.put("imei", ToolsUtil.getIMEI(BaseApplication.getContext()));
        Map<String, String> map = new HashMap();
        map.put("type", "E");
        map.put("msg", code);
        map.put("ext", JsonUtils.toJSONStr(inTrx));
        map.put("authorization", SPUtil.getString("userId", "") + "_" + SPUtil.getString("token", ""));
        LogUtil.e("url map:", RestURL.REPORT_MSG + "?" + JsonUtils.toJSONStr(map));

//        call = OkHttpUtils.postString().url(RestURL.REPORT_MSG).content(map).build();
//        call.execute(callback);

        StringBuffer sb = new StringBuffer();
        //设置表单参数
        for (String key : map.keySet()) {
            sb.append(key + "=" + map.get(key) + "&");
        }
        LogUtil.e("url map:", url + "?" + sb.toString());
        call = OkHttpUtils.postString().url(RestURL.REPORT_MSG).content(sb.toString()).build();
        call.execute(callback);
    }

}

posted @ 2018-12-16 10:59  journeyIT  阅读(53)  评论(0)    收藏  举报