OkHttpUtils 网络框架

    
添加依赖
    compile 'com.squareup.okhttp3:okhttp:3.6.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.6.0'
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.google.code.gson:gson:2.8.0'



public class OkHttpUtils {
    private static OkHttpUtils instance;
    private OkHttpClient client;
    private Handler handler =new Handler(Looper.getMainLooper()){};

    interface MyCallback<T>{
        void success(T t);
        void fail(String msg);
    }

    private OkHttpUtils(){
        HttpLoggingInterceptor interceptor=new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        client =new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .addNetworkInterceptor(interceptor)
                .build();
    }

    public static OkHttpUtils getInstance(){
        //双重检索
        if(instance==null){
            synchronized (OkHttpUtils.class){
                if(instance==null){
                    instance=new OkHttpUtils();
                }
            }
        }
        return instance;
    }

    public void getOkHttp(String url, Map<String,Object> map, final Class repType, final MyCallback callback){
        String urlGet = makeGetUrl(url,map);
        final Request request = new Request.Builder()
                .url(urlGet)
                .build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, final IOException e) {
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.fail(e.getMessage());
                    }
                });

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                final String result = response.body().string();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        callback.success(new Gson().fromJson(result,repType));
                    }
                });
            }
        });
    }

    private String makeGetUrl(String url, Map<String, Object> map) {
        StringBuffer sb =new StringBuffer();
        if(map!=null){
            for (String key :map.keySet()){
                sb.append(key);
                sb.append("=");
                sb.append(map.get(key));
                sb.append("&");
            }
            return url+"?"+sb.substring(0,sb.length()-1);
        }else {
            return url;
        }
    }
}


------------------------------------------如何调用-----------------------------------

  OkHttpUtils.getInstance().getOkHttp("http://www.tngou.net/tnfs/api/list", null, JsonBean.class, new OkHttpUtils.MyCallback<JsonBean>() {

            @Override //请求成功
            public void success(JsonBean jsonBean) {
              
            }

            @Override //请求失败
 
 
            public void fail(String msg) {
} });
 

猜你喜欢

转载自blog.csdn.net/langxian_168/article/details/64132249
今日推荐