package com.bwie.yuekao.utils;
import android.util.Log;
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.Response;
import okhttp3.logging.HttpLoggingInterceptor;
public class OkHttputils {
private static OkHttputils okHttputils;
private static OkHttpClient okhttpClient;
private OkHttputils(){
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
okhttpClient = new OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.writeTimeout(5, TimeUnit.SECONDS)
.readTimeout(5,TimeUnit.SECONDS)
.connectTimeout(5,TimeUnit.SECONDS)
.build();
}
public static OkHttputils getInstance(){
if (okHttputils ==null){
synchronized (OkHttputils.class){
if (okHttputils ==null){
okHttputils = new OkHttputils();
}
}
}
return okHttputils;
}
public void getData(String url, HashMap<String,String > params, final RequestCallback requestCallback){
StringBuilder urlsb = new StringBuilder();
String allUrl ="";
for (Map.Entry<String,String> stringStringEntry : params.entrySet()){
urlsb.append("?").append(stringStringEntry.getKey()).append("=").append(stringStringEntry.getValue()).append("&");
}
allUrl = url+urlsb.toString().substring(0,urlsb.length()-1);
System.out.println("url:"+ allUrl);
Request build = new Request.Builder()
.url(allUrl).get().build();
okhttpClient.newCall(build).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (requestCallback !=null){
requestCallback.failure(call,e);
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (requestCallback !=null){
requestCallback.onResponse(call,response);
}
}
});
}
public void postData(String url,HashMap<String ,String > prams,final RequestCallback requestCallback){
FormBody.Builder fromBodybuilder = new FormBody.Builder();
Log.i("aaaaa","aaaa");
if (prams != null && prams.size()>0){
for (Map.Entry<String,String > stringStringEntry : prams.entrySet()){
fromBodybuilder.add(stringStringEntry.getKey(),stringStringEntry.getValue());
}
}
Request requset = new Request.Builder()
.url(url).post(fromBodybuilder.build()).build();
okhttpClient.newCall(requset).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
if (requestCallback !=null){
requestCallback.failure(call, e);
}
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (requestCallback !=null){
requestCallback.onResponse(call, response);
}
}
});
}
}
工具类需要写的回调接
//RequestCallback
package com.bwie.yuekao.utils;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Response;
public interface RequestCallback {
void failure(Call call, IOException e);
void onResponse(Call call, Response response);
}