package com.example.mvp3.mvp.netwoke;
import android.os.Handler;
import android.util.Log;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
//拦截和单例
public class NetWork {
private static NetWork instance;
//Hander
Handler handler = new Handler();
// 拦截器
private Interceptor interceptor() {
Interceptor interceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
Log.i("NetWork", "intercept: 拦截前");
Response response = chain.proceed(request);
Log.i("NetWork", "intercept: 拦截后");
return response;
}
};
return interceptor;
}
private NetWork() {
}
public static NetWork getInstance() {
// 点里
if (instance == null) {
synchronized (NetWork.class) {
if (instance == null) {
instance = new NetWork();
}
}
}
return instance;
}
// 请求数据
public void post(String url, String phone, String pwd, final GetBackCall getBackCall) {
OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(interceptor()).build();
FormBody formBody = new FormBody.Builder().add("phone", phone).add("pwd", pwd).build();
final Request request = new Request.Builder().url(url).post(formBody).build();
okHttpClient.newCall(request).enqueue(new Callback() {
// 失败会会获取他
@Override
public void onFailure(Call call, IOException e) {
getBackCall.error(e);
}
//成功了会获取他
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
getBackCall.success(string);
}
});
}
});
}
// 请求数据
public void get(String url, final GetBackCall getBackCall) {
OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(interceptor()).build();
final Request request = new Request.Builder().url(url).get().build();
okHttpClient.newCall(request).enqueue(new Callback() {
// 失败会会获取他
@Override
public void onFailure(Call call, IOException e) {
getBackCall.error(e);
}
//成功了会获取他
@Override
public void onResponse(Call call, Response response) throws IOException {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
getBackCall.success(string);
}
});
}
});
}
public interface GetBackCall {
public void success(String s);
public void error(Throwable e);
}
}