导入Okhttp的依赖
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
public class OkHttpUtils {
private static volatile OkHttpUtils instance;
private OkHttpClient client;
private Handler handler=new Handler(Looper.getMainLooper());
public static OkHttpUtils getInstance(){
if(instance==null){
synchronized (OkHttpUtils.class){
if(null==instance){
instance=new OkHttpUtils();
}
}
}
return instance;
}
private OkHttpUtils(){
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
HttpLoggingInterceptor interceptor = httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
client=new OkHttpClient.Builder()
.connectTimeout(5000, TimeUnit.SECONDS)
.readTimeout(5000,TimeUnit.SECONDS)
.writeTimeout(5000,TimeUnit.SECONDS)
.addInterceptor(interceptor)
.build();
}
//异步get请求
public void getRequest(String path, final Class clazz, final MCllback mCllback){
Request request = new Request.Builder()
.get()
.url(path)
.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() {
mCllback.onFail(e);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String result = response.body().string();
Gson gson=new Gson();
final Object o = gson.fromJson(result, clazz);
handler.post(new Runnable() {
@Override
public void run() {
mCllback.onSuccess(o);
}
});
}
});
}
//异步post请求
public void postRequest(String path, Map<String,String> params, final Class clazz, final MCllback mCllback){
FormBody.Builder builder = new FormBody.Builder();
for (Map.Entry<String,String> entry:params.entrySet()
) {
builder.add(entry.getKey(),entry.getValue());
}
RequestBody body = builder.build();
Request request = new Request.Builder()
.url(path)
.post(body)
.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() {
mCllback.onFail(e);
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String result = response.body().string();
Gson gson=new Gson();
final Object o = gson.fromJson(result, clazz);
handler.post(new Runnable() {
@Override
public void run() {
mCllback.onSuccess(o);
}
});
}
});
}
}
接口
public interface MCllback {
void onSuccess(Object object);
void onFail(Exception e);
}