okHttp单例封装

来源:互联网 发布:淘宝我的空间怎么设置 编辑:程序博客网 时间:2024/06/08 07:34
此为okhttp封装的单例工具类,及泛型回调,结合了mvp模式package com.bwie.test.Utils;import android.os.Handler;import android.os.Message;import com.bwie.test.View.CallBackResult;import com.google.gson.Gson;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;ssssimport okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;/** * User: Moyuchen * Date: 2017-10-26 14:50 * Description: */public class NetWorkOkHttp {    private static NetWorkOkHttp netWorkOkHttp;    private OkHttpClient client;    private final Handler handler;    private NetWorkOkHttp(){        client=new OkHttpClient.Builder().addInterceptor(new LoggingInterceptor())                .build();        handler = new Handler();    }    //单例模式    public static NetWorkOkHttp getInstance(){        if (netWorkOkHttp==null) {            synchronized (NetWorkOkHttp.class){                if (netWorkOkHttp==null) {                    netWorkOkHttp=new NetWorkOkHttp();                }            }        }        return  netWorkOkHttp;    }    public<T> void getData(String url, final CallBackResult callBackResult, final Class<T> tclass){        FormBody.Builder builder = new FormBody.Builder();        RequestBody requestbody = builder.build();        Request request=new Request.Builder().url(url).post(requestbody).build();        client.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                callBackResult.onFailure("请求失败");            }            @Override            public void onResponse(Call call, Response response) throws IOException {                if ( response.isSuccessful()) {                    String string = response.body().string();                    Gson gson=new Gson();                    final T t = gson.fromJson(string, tclass);                    final Message msg = Message.obtain();                    msg.obj=t;                    handler.post(new Runnable() {                        @Override                        public void run() {                            callBackResult.onResponse(msg.obj);                        }                    });                }            }        });    }}此为公共的接口,添加泛型
package com.bwie.test.View;/** * User: Moyuchen * Date: 2017-10-26 14:48 * Description: */public interface CommonView<T> {    void OnFailure(String msg);    void OnResponse(T t);}