簡單的OkHttp封裝類


public class OkHttpUtils {

    private static final int HTTP_FAIL = 1001;//失敗

    private static final int HTTP_SUCCESS = 1000;//成功
//    private Context context;
//
//    public OkHttpUtils(Context context) {
//        this.context = context;
//    }

    //get請求
    public OkHttpUtils get(String url) {
        doHttp(0, url, null);
        return this;
    }

    //post請求
    public OkHttpUtils post(String url, FormBody.Builder builder) {
        doHttp(1, url, builder);
        return this;
    }

    //put請求
    public OkHttpUtils put(String url, FormBody.Builder builder) {
        doHttp(2, url, builder);
        return this;
    }

    //delete請求
    public OkHttpUtils delete(String url, FormBody.Builder builder) {
        doHttp(3, url, builder);
        return this;
    }

    //傳遞頭參
    private Map<String, String> headMap = new HashMap<>();

    public OkHttpUtils setHead(Map<String, String> headMap) {
        this.headMap = headMap;
        return this;
    }

    //執行網絡請求
    private void doHttp(int i, String url, FormBody.Builder builder) {
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new Interceptor() {
            @Override
            public Response intercept(Chain chain) throws IOException {
                //攔截器添加頭參
                Request request = chain.request();
//                Request.Builder builder1= request.newBuilder();
//                Set<Map.Entry<String, String>> setHead = headMap.entrySet();
//                for (Map.Entry<String, String> head:setHead) {
//                    String key=head.getKey();
//                    String value=head.getValue();
//                    builder1.addHeader(key,value);
//                }
                return chain.proceed(request);
            }
        }).build();
        Request.Builder builder1 = new Request.Builder();
        if (i == 0) {
            builder1.get();
        } else if (i == 1) {
            builder1.post(builder.build());
        } else if (i == 2) {
            builder1.put(builder.build());
        } else if (i == 3) {
            builder1.delete(builder.build());
        }

        //添加頭參
        Set<Map.Entry<String, String>> setHead = headMap.entrySet();
        for (Map.Entry<String, String> head : setHead) {
            String key = head.getKey();
            String value = head.getValue();
            builder1.addHeader(key, value);
        }


        //把你保存好的userid 和seessionId 取出來

//        SharedPreferences sp=context.getSharedPreferences("name",0);
//        String userId=sp.getString("userid","");
//        String sessionid=sp.getString("sessionid","");
//
//        builder1.addHeader("userid",userId);
//        builder1.addHeader("sessionid",sessionid);

        builder1.url(url);
        final Message message = Message.obtain();
        client.newCall(builder1.build()).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                message.what = HTTP_FAIL;
                message.obj = e.getMessage();
                handler.sendMessage(message);
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                message.what = HTTP_SUCCESS;
                message.obj = response.body().string();
                handler.sendMessage(message);
            }
        });
    }

    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == HTTP_SUCCESS) {//成功
                String data = (String) msg.obj;
                try {
                    mHttpListener.success(data);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                //失敗
                String error = (String) msg.obj;
                mHttpListener.fail(error);
            }
        }
    };


    //傳遞接口
    private HttpListener mHttpListener;

    public void result(HttpListener mHttpListener) {
        this.mHttpListener = mHttpListener;
    }

    public interface HttpListener {
        void success(String data) throws JSONException;

        void fail(String error);
    }
}

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