package com.example.someutil.util;
import com.google.gson.Gson;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
public class OkHttpUtil {
private static Gson gson = new Gson();
private static final String METHOD_GET = "GET";
private static final String METHOD_POST = "POST";
private static final String METHOD_PUT = "PUT";
private static final String METHOD_DELETE = "DELETE";
public static OkHttpClient okHttpClient;
private OkHttpUtil(){}
public static void init(){
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.connectTimeout(3000,TimeUnit.MILLISECONDS);
builder.readTimeout(3000,TimeUnit.MILLISECONDS);
builder.writeTimeout(3000,TimeUnit.MILLISECONDS);
builder.addInterceptor(new OkLogInterceptor());
builder.addInterceptor(new OkHeaderInterceptor());
okHttpClient = builder.build();
}
private static Request createRequest(String url, String method, Map<String,String> map){
FormBody body = null;
if(map!=null){
FormBody.Builder builder = new FormBody.Builder();
Set set = map.keySet();
Iterator iterator = set.iterator();
while (iterator.hasNext()){
String key = (String) iterator.next();
String value = map.get(key);
builder.add(key,value);
}
body = builder.build();
}
Request.Builder builder = new Request.Builder().url(url);
Request request = null;
switch (method){
case METHOD_GET:
request = builder.build();
break;
case METHOD_POST:
request = builder.post(body).build();
break;
case METHOD_PUT:
if(body!=null){
request = builder.put(body).build();
}
break;
case METHOD_DELETE:
if(body!=null){
request = builder.delete(body).build();
}else {
request = builder.delete().build();
}
break;
}
return request;
}
//异步get
public static void enqueueGet(String url,Callback callback){
Request request = createRequest(url, METHOD_GET, null);
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
}
//异步post
public static void enqueuePost(String url,Map<String,String> map,Callback callback){
Request request = createRequest(url, METHOD_POST, map);
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
}
public static void enqueuePut(String url,Map<String,String> map,Callback callback){
Request request = createRequest(url, METHOD_PUT, map);
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
}
public static void enqueueDelete(String url,Map<String,String> map,Callback callback){
Request request = createRequest(url, METHOD_DELETE, map);
Call call = okHttpClient.newCall(request);
call.enqueue(callback);
}
}