添加依赖 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) {} });