Okhttp工具类

来源:互联网 发布:pdf阅读器有没有mac 编辑:程序博客网 时间:2024/06/05 00:19

创建OkHttpUtils

package code.feihu.com.shangfeihu_yuekao.okhttp;import android.os.Handler;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Interceptor;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class OkHttpUtils {    private Handler handler = new Handler();    public Handler getHandler(){        return handler;    }    //单例    private static OkHttpUtils okHttpUtils = new OkHttpUtils();    private OkHttpUtils(){};    public static OkHttpUtils getInstance(){        return okHttpUtils;    }    private OkHttpClient client;    private void initOkHttpClient(){        if(client == null){            client = new OkHttpClient.Builder().build();        }    }    Interceptor appInterceptor = new Interceptor() {        @Override        public Response intercept(Chain chain) throws IOException {            Request request = chain.request();            //---------请求之前------------            Response response = chain.proceed(request);            //---------请求之后------------            return response;        }    };    //公用的get请求方法  完成的功能不确定    public void doGet(String url, Callback callback){        initOkHttpClient();        Request request = new Request.Builder().                url(url).build();        Call call = client.newCall(request);        call.enqueue(callback);    }}

创建OnUiCallback

package code.feihu.com.shangfeihu_yuekao.okhttp;import android.os.Handler;import java.io.IOException;import okhttp3.Call;import okhttp3.Callback;import okhttp3.Response;public abstract class OnUiCallback implements Callback{    private Handler handler = OkHttpUtils.getInstance().getHandler();    public abstract void onFailed(Call call, IOException e);    public abstract void onSuccess(String result) throws IOException;    @Override    public void onFailure(final Call call, final IOException e) {        //该方式  存在问题  网络请求也跑到了主线程   待解决        //该方法就是把  线程post到handler所在的线程        handler.post(new Runnable() {            @Override            public void run() {                onFailed(call, e);            }        });    }    @Override    public void onResponse(final Call call, final Response response) throws IOException {        final String result = response.body().string();        //该方式  存在问题  网络请求也跑到了主线程   待解决        handler.post(new Runnable() {            @Override            public void run() {                try {                    onSuccess(result);                } catch (IOException e) {                    e.printStackTrace();                }            }        });    }}
原创粉丝点击