OkHttpUtils的常規使用

如果請求頭中含有中文請進行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;
    }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章