NetCallBack 泛型封装 + okhttputils封装

来源:互联网 发布:php代码转asp 编辑:程序博客网 时间:2024/05/17 03:09
!!!注意NetCallBack 泛型封装 和 okhttputils封装不要写在一个类中! public interface NetCallBack<T> {       void successNet(T t);    void errorNet(String errorMsg, int errorCode);}    okhttputils封装 
public class OkHttpUtils {            private NetCallBack callBack;            private static final int OK = 0;            private Handler mHandler = new Handler();            //get请求            public <T> void getLoadData(String url, final NetCallBack callBack, final Class<T> tClass) {                this.callBack = callBack;                LoggingInterceptor loggingInterceptor=new LoggingInterceptor();                OkHttpClient okHttpClient = new OkHttpClient.Builder()                        .addInterceptor(loggingInterceptor)                        .readTimeout(20, TimeUnit.SECONDS)                        .connectTimeout(10, TimeUnit.SECONDS)                        .build();                final Request request = new Request.Builder().url(url).build();                Call call = okHttpClient.newCall(request);                call.enqueue(new Callback() {                    @Override                    public void onFailure(Call call, IOException e) {                        callBack.errorNet(e.getMessage(), 498);                    }                    @Override                    public void onResponse(Call call, Response response) throws IOException {                        T t = new Gson().fromJson(response.body().string(), tClass);                        final Message msg = Message.obtain();                        msg.what = OK;                        msg.obj = t;                        mHandler.post(new Runnable() {                            @Override                            public void run() {                                callBack.successNet(msg.obj);                            }                        });                    }                });            }            //post请求            public <T> void getLoadDataPost(String url, final NetCallBack callBack, final Class<T> tClass, RequestBody body) {                this.callBack = callBack;                OkHttpClient okHttpClient = new OkHttpClient.Builder()                        .readTimeout(20, TimeUnit.SECONDS)                        .connectTimeout(10, TimeUnit.SECONDS)                        .build();                final Request request = new Request.Builder().url(url).post(body).build();                Call call = okHttpClient.newCall(request);                call.enqueue(new Callback() {                    @Override                    public void onFailure(Call call, IOException e) {                        callBack.errorNet(e.getMessage(), 499);                    }                    @Override                    public void onResponse(Call call, Response response) throws IOException {                        T t = new Gson().fromJson(response.body().string(), tClass);                        final Message msg = Message.obtain();                        msg.what = OK;                        msg.obj = t;                        mHandler.post(new Runnable() {                            @Override                            public void run() {                                callBack.successNet(msg.obj);                            }                        });                    }                });            }        }