package com.example.aason.dierzhoumoni.net;
import android.os.Handler;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
public class OKHttpUtils {
private OkHttpClient okHttpClient;
private Handler handler =new Handler();
private static OKHttpUtils mInstance;
public static OKHttpUtils getmInstance(){
if (mInstance == null) {
synchronized (OKHttpUtils.class){
mInstance = new OKHttpUtils();
}
}
return mInstance;
}
private OKHttpUtils(){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okHttpClient = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.writeTimeout(5,TimeUnit.SECONDS)
.connectTimeout(5,TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.build();
}
public void doGET(String url, final OKhttpCallBack oKhttpCallBack){
Request build = new Request.Builder().url(url).get().build();
okHttpClient.newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
oKhttpCallBack.fail(“网络异常”);
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.code()==200) {
final String string = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
oKhttpCallBack.success(string);
}
});
}
}
});
}
public void doPost(String url, HashMap<String,String>map, final OKhttpCallBack oKhttpCallBack){
FormBody.Builder builder = new FormBody.Builder();
for(Map.Entry<String,String>p:map.entrySet()){
builder.add(p.getKey(),p.getValue());
}
RequestBody requestBody = builder.build();
Request request = new Request.Builder().url(url).post(requestBody).build();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (oKhttpCallBack != null) {
oKhttpCallBack.fail("网络异常");
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (oKhttpCallBack != null) {
if (response.code()==200) {
final String result = response.body().string();
handler.post(new Runnable() {
@Override
public void run() {
oKhttpCallBack.success(result);
}
});
}
}
}
});
}
}