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