OkHttp get post请求的封装

来源:互联网 发布:seo推广学院 编辑:程序博客网 时间:2024/05/18 03:08
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);                    }                });            }        });    }}
原创粉丝点击