OkHttp get post请求的封装

import android.os.Handler;

import com.example.mvp3.OnFinishListener;

import java.io.IOException;
import java.util.Map;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
 * Created by 知足 on 2017/12/9.
 */

public class OkHttpUtils {

    private static OkHttpUtils okHttpUtils = null;
    private static Handler handler =new Handler();

    private OkHttpUtils(){};

    /**
     * 获取当前这个类的实列
     * */
    public static OkHttpUtils getInstance(){

        if(null == okHttpUtils){}

         synchronized (OkHttpUtils.class){
             if(null == okHttpUtils){
                 okHttpUtils =new OkHttpUtils();
             }
         }

        return  okHttpUtils;
    }

    /**
     * get请求
     * */

    public void doGet(String path, Map<String,String> map , final OnFinishListener onFinishListener){

        StringBuilder sb = null;

        for(String key: map.keySet()){

            if(null == sb){

              sb= new StringBuilder();
                sb.append("?");

            }else{
                sb.append("&");
            }

            //拼接参数
            sb.append(key).append("=").append(map.get(key));
        }

        OkHttpClient okHttpClient = new OkHttpClient();

        final Request request = new Request.Builder()
                .url(path+sb.toString())
                .get()
                .build();

        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {

                //在子线程
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        onFinishListener.onFailed(e.getMessage());
                    }
                });

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                final String result = response.body().string();

                handler.post(new Runnable() {
                    @Override
                    public void run() {

                        onFinishListener.onSuccess(result);
                    }
                });

            }
        });

    }

    /**
     * post请求
     * */

    public void doPost(String path, Map<String,String> map, final OnFinishListener onFinishListener){

        OkHttpClient okHttpClient = new OkHttpClient();

        FormBody.Builder builder= new FormBody.Builder();

        for (String key:map.keySet()){
            builder.add(key,map.get(key));
        }

        //构建请求体
        FormBody body = builder.build();

        Request request = new Request.Builder()
                .post(body)
                .url(path)
                .build();

        Call call = okHttpClient.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                //在子线程
                handler.post(new Runnable() {
                    @Override
                    public void run() {

                        onFinishListener.onFailed(e.getMessage());

                    }
                });

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                final String result = response.body().string();

                handler.post(new Runnable() {
                    @Override
                    public void run() {
                      onFinishListener.onSuccess(result);
                    }
                });
            }
        });

    }


}

猜你喜欢

转载自blog.csdn.net/xxb52306/article/details/78766807