package mlb.bawei.com.threetesttwo.okhttp;

import android.content.Context;
import android.os.Handler;
import android.os.Looper;

import com.google.gson.Gson;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import mlb.bawei.com.threetesttwo.callback.ICallBack;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;

/**

  • @author

  • @date 2018/12/14
    */
    public class OKHttp {
    //01
    private static OKHttp mInstance;
    public static OKHttp getmInstance(){
    if(mInstancenull){
    synchronized (OKHttp.class){
    if(mInstance
    null){
    mInstance = new OKHttp();
    }
    }
    }
    return mInstance;
    }
    //02 实例化m
    private OkHttpClient mClient;
    public OKHttp(){
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    mClient = new OkHttpClient.Builder()
    .readTimeout(10, TimeUnit.SECONDS)
    .connectTimeout(10, TimeUnit.SECONDS)
    .writeTimeout(10, TimeUnit.SECONDS)
    .addInterceptor(interceptor)
    .build();
    }
    //04
    private Handler mHandler = new Handler(Looper.getMainLooper());
    //03
    public void getEnqueue(String url, final Class cla, final ICallBack iCallBack){
    Request request = new Request.Builder()
    .url(url)
    .get()
    .build();
    Call call = mClient.newCall(request);
    call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
    iCallBack.fail(e);
    }

         @Override
         public void onResponse(Call call, Response response) throws IOException {
             try {
                 String string = response.body().string();
                 final   o = new Gson().fromJson(string, cla);
                 mHandler.post(new Runnable() {
                     @Override
                     public void run() {
                         iCallBack.setData(o);
                     }
                 });
             }catch (Exception e){
                 iCallBack.fail(e);
             }
         }
     });
    

    }
    }

收藏 打印