public class HttpUtil {
private static OkHttpClient singleton;
//非常有必要,要不此类还是可以被new,但是无法避免反射
private HttpUtil() {
}
public static OkHttpClient getInstance() {
if (singleton == null) {
synchronized (HttpUtil.class) {
if (singleton == null) {
singleton = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(20, TimeUnit.SECONDS)
.cookieJar(new CookieJar() {
private final HashMap<String, List<Cookie>> cookieStore = new HashMap<>();
@Override
public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
cookieStore.put(url.host(), cookies);
}
@Override
public List<Cookie> loadForRequest(HttpUrl url) {
List<Cookie> cookies = cookieStore.get(url.host());
return cookies != null ? cookies : new ArrayList<Cookie>();
}
}).build();
}
}
}
return singleton;
}
}
这样写如果切换用户登录会造成cookies丢失 吗