再别人基础之上改版的,有附带SESSION跟Cookie标识
package com.lhcx.user.okhttp; import android.os.Handler; import android.os.Looper; import com.lhcx.user.mybase.LG; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Cookie; import okhttp3.CookieJar; import okhttp3.FormBody; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class OkHttpManager { /** * 静态实例 */ private static OkHttpManager sOkHttpManager; /** * okhttpclient实例 */ private OkHttpClient mClient; /** * 因为我们请求数据一般都是子线程中请求,在这里我们使用了handler */ private Handler mHandler; /** * 构造方法 */ private OkHttpManager() { // mClient = new OkHttpClient(); final Map<String, List<Cookie>> cookieStore = new HashMap<String, List<Cookie>>(); mClient = new OkHttpClient.Builder() .cookieJar(new CookieJar() { @Override public void saveFromResponse(HttpUrl httpUrl, List<Cookie> list) { if (cookieStore.get("1") == null) cookieStore.put("1", list); } @Override public List<Cookie> loadForRequest(HttpUrl httpUrl) { List<Cookie> cookies = cookieStore.get("1"); return cookies != null ? cookies : new ArrayList<Cookie>(); } }).build(); /** * 在这里直接设置连接超时.读取超时,写入超时 */ mClient.newBuilder().connectTimeout(10, TimeUnit.SECONDS); mClient.newBuilder().readTimeout(10, TimeUnit.SECONDS); mClient.newBuilder().writeTimeout(10, TimeUnit.SECONDS); /** * 如果是用的3.0之前的版本 使用以下直接设置连接超时.读取超时,写入超时 */ //client.setConnectTimeout(10, TimeUnit.SECONDS); //client.setWriteTimeout(10, TimeUnit.SECONDS); //client.setReadTimeout(30, TimeUnit.SECONDS); /** * 初始化handler */ mHandler = new Handler(Looper.getMainLooper()); } /**