okhttp封装
需建BaseRequest类
public class OkHttpUtil {
public static Gson gson = new Gson();
//设置编码格式
public static final String METHOD_TYPE = “application/json; charset=utf-8”;
//四种模式
public static final String METHOD_GET = “GET”;
public static final String METHOD_POST = “POST”;
public static final String METHOD_PUT = “PUT”;
public static final String METHOD_DELETE = “DELETE”;
private static OkHttpClient sClient;
//单例模式
public OkHttpUtil(){}
public static void init(){
sClient = new OkHttpClient.Builder()
//设置超时时间
.connectTimeout(3000,TimeUnit.MICROSECONDS)
//设置读写时间
.writeTimeout(3000,TimeUnit.MICROSECONDS)
.readTimeout(3000,TimeUnit.MICROSECONDS)
.build();
}
//创建Request对象
private static Request creat(String url, String method, BaseRequest baseRequest){
RequestBody requestBody = null;
if(baseRequest!=null){
String json = gson.toJson(baseRequest);
MediaType parse = MediaType.parse(METHOD_TYPE);
requestBody = RequestBody.create(parse, json);
}
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(requestBody).build();
break;
case METHOD_PUT:
request = builder.put(requestBody).build();
break;
case METHOD_DELETE:
if(requestBody != null){
request = builder.delete(requestBody).build();
}else{
request = builder.delete().build();
}
break;
}
return request;
}
//封装异步get请求
public static void enqueueGet(String url, Callback callback,BaseRequest baseRequest){
Request request = creat(url,METHOD_POST,baseRequest);
Call call = sClient.newCall(request);
call.enqueue(callback);
}
//封装同步post请求
public static Response executePost(String url,BaseRequest baseRequest) throws IOException {
Request request = creat(url, METHOD_POST, baseRequest);
Call call = sClient.newCall(request);
Response response = call.execute();
return response;
}
//同步get请求
public static Response executeGet(String url) throws IOException {
Request request = creat(url, METHOD_GET, null);
Call call = sClient.newCall(request);
Response response = call.execute();
return response;
}
}