OkHttp工具类简单封装运用

来源:互联网 发布:药智网数据库vip 编辑:程序博客网 时间:2024/05/18 15:57

简单的OK封装运用

如需别的功能 ,请另寻他处


导入依赖:

compile 'com.google.code.gson:gson:2.8.1'compile 'com.squareup.okhttp3:okhttp:3.2.0'

//OkHttp工具类

 private static ReentrantLock lock = new ReentrantLock();    private static volatile HttpUtils httpUtils;    private final OkHttpClient okHttpClient;    private Handler handler = new Handler(Looper.getMainLooper());    private static HashMap<String,String> headers = new HashMap<>();    static{        headers.put("client_type","android");    }    private HttpUtils() {        okHttpClient = new OkHttpClient();    }    public static HttpUtils getInstance() {        if (httpUtils == null) {            lock.lock();            try {                if (httpUtils == null) {                    httpUtils = new HttpUtils();                }            } finally {                lock.unlock();            }        }        return httpUtils;    }    public void doPost(String url, HashMap<String, String> params, final Class clazz, final OnNetListener onNetListener) {        FormBody.Builder builder = new FormBody.Builder();//        for (Map.Entry<String, String> entry : params.entrySet()) {//            builder.add(entry.getKey(), entry.getValue());//        }//        RequestBody formBody = builder.build();        Request request = new Request.Builder()                .url(url)                .build();        okHttpClient.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, final IOException e) {                handler.post(new Runnable() {                    @Override                    public void run() {                        if (onNetListener!=null){                            onNetListener.onError(e);                        }                    }                });            }            @Override            public void onResponse(Call call, final Response response) throws IOException {                handler.post(new Runnable() {                    @Override                    public void run() {                        if (onNetListener!=null){//                            onNetListener.onSuccess(response);                            try {                             BaseBeen baseBena  = (BaseBeen) new Gson().fromJson(response.body().string(), clazz);                                if (baseBena.getCode()==200){                                    onNetListener.onSuccess(baseBena);                                }else if(baseBena.getCode()==300){                                    //做相应的操作                                }                            } catch (IOException e) {                            }                        }                    }                });            }        });    }    /**     * GET 请求     *     * @param url     * @param headerMap     * @param onNetListener     */    public void doGet(String url, HashMap<String, String> headerMap, final OnNetListener onNetListener) {        if (headerMap == null || headerMap.size() == 0) {            throw new RuntimeException("headerMap is null !!!!");        }        Request.Builder builder = new Request.Builder();        builder.url(url);        headers.putAll(headerMap);        for (Map.Entry<String, String> entry : headers.entrySet()) {            builder.addHeader(entry.getKey(), entry.getValue());        }        Request request = builder.build();        okHttpClient.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, final IOException e) {                handler.post(new Runnable() {                    @Override                    public void run() {                        onNetListener.onError(e);                    }                });            }            @Override            public void onResponse(Call call, final Response response) throws IOException {                //默认返回结果在子线程当中                handler.post(new Runnable() {                    @Override                    public void run() {                        onNetListener.onSuccess(response);                    }                });            }        });    }

创建接口

public interface OnNetListener {    public void onSuccess(Response response);    public void onSuccess(BaseBeen baseBean);    public void onError(IOException e);}

MainActivity运用

HttpUtils.getInstance().doPost(url, null, BaseBeen.class, new OnNetListener() {    @Override    public void onSuccess(Response response) {    }    @Override    public void onSuccess(BaseBeen baseBean) {    }    @Override    public void onError(IOException e) {    }});