pom依赖引入
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.1</version>
</dependency>
单例
import okhttp3.*;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class OkHttpUtils {
private OkHttpClient okHttpClient;
private static OkHttpUtils okHttpUtils = null;
private Long connectTimeOut=2000L;
private Long callTimeout=1000L;
private OkHttpUtils() {
okHttpClient = new OkHttpClient.Builder()
.callTimeout(callTimeout, TimeUnit.SECONDS)
.connectTimeout(connectTimeOut, TimeUnit.SECONDS)
.build();
}
public OkHttpUtils setCallTimeout(Long callTimeout){
this.callTimeout=callTimeout;
return this;
}
public OkHttpUtils setConnectTimeOut(Long connectTimeOut){
this.connectTimeOut=connectTimeOut;
return this;
}
/**
* 关闭连接
*/
private void shutdown() {
okHttpClient.dispatcher().executorService().shutdown();
}
public static OkHttpUtils getInstance() {
if (okHttpUtils == null) synchronized (OkHttpUtils.class) {
if (okHttpUtils == null) okHttpUtils = new OkHttpUtils();
}
return okHttpUtils;
}
Response sendGet(String url) throws IOException {
Request request = new Request.Builder().url(url).build();
Response response = okHttpClient.newCall(request).execute();
return response;
}
String sendPost(String url, RequestBody body) throws IOException {
Request request = new Request.Builder().url(url).post(body).build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
void sendAsyncGet(String url, Callback callback) {
Request request = new Request.Builder().url(url).build();
okHttpClient.newCall(request).enqueue(callback);
}
void sendAsyncPost(String url, RequestBody body, Callback callback) {
Request request = new Request.Builder().url(url).post(body).build();
okHttpClient.newCall(request).enqueue(callback);
}
/**
* 缓存
* @param url url地址
* @return 响应
* @throws IOException 异常
*/
String sendCacheGet(String url) throws IOException {
Request request = new Request.Builder().url(url).cacheControl(new CacheControl.Builder().maxStale(24 * 60 * 60, TimeUnit.SECONDS).build()).build();
Response response = okHttpClient.newCall(request).execute();
return response.body().string();
}
}