美文网首页
android okhttp3自动保存cookie(二)

android okhttp3自动保存cookie(二)

作者: Code819 | 来源:发表于2021-01-06 15:32 被阅读0次

    一、在build加入依赖

      implementation 'com.squareup.okhttp3:okhttp:3.6.0'

        implementation 'com.squareup.okio:okio:1.5.0'

        implementation 'com.github.franmontiel:PersistentCookieJar:v1.0.1'

    二、写网络请求工具类

    import com.example.mowangtao.MVP.BaseApplication;

    import com.franmontiel.persistentcookiejar.PersistentCookieJar;

    import com.franmontiel.persistentcookiejar.cache.SetCookieCache;

    import com.franmontiel.persistentcookiejar.persistence.SharedPrefsCookiePersistor;

    import com.google.gson.Gson;

    import java.io.IOException;

    import java.io.UnsupportedEncodingException;

    import java.util.HashMap;

    import java.util.concurrent.TimeUnit;

    import okhttp3.Call;

    import okhttp3.Callback;

    import okhttp3.MediaType;

    import okhttp3.OkHttpClient;

    import okhttp3.Request;

    import okhttp3.RequestBody;

    import okhttp3.Response;

    public class RequestManager {

        private OkHttpClient mOkHttpClient;

        private static String BASE_URL = Constant.ServerletUrl;

        private static RequestManager instance;

        private Gson gson;

        public RequestManager() {

            PersistentCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(BaseApplication.getInstance().getBaseContext()));

            mOkHttpClient = new OkHttpClient.Builder()

                    .connectTimeout(10000, TimeUnit.MILLISECONDS)

                    .readTimeout(10000, TimeUnit.MILLISECONDS)

                    .cookieJar(cookieJar)

                    .build();

        }

        public static RequestManager getInstance() {

            if (instance == null) {

                synchronized (RequestManager.class) {

                    if (instance == null) {

                        instance = new RequestManager();

                    }

                }

            }

            return instance;

        }

        /***

        * post请求

        */

        public void PostRequest(HashMap<String, Object> paramsMap, String url, final ResultCallback callback) throws UnsupportedEncodingException {

            gson = new Gson();

            String params = gson.toJson(paramsMap);

            RequestBody body = RequestBody.create(MediaType.parse("application/json;charset=UTF-8"), params);

            String requestUrl = BASE_URL + url;

            final Request request = new Request.Builder()

                    .url(requestUrl)

                    .post(body)

                    .build();

            Call callclient = mOkHttpClient.newCall(request);

            callclient.enqueue(new Callback() {

                @Override

                public void onFailure(Call call, IOException e) {

                    callback.onError("网络请求失败,请稍后重试");

                }

                @Override

                public void onResponse(Call call, final Response response) throws IOException {

                    if (response.isSuccessful()) {

                        int code = response.code();

                        if (code == 200) {//请求成功

                            String result = response.body().string();

                            callback.onResponse(String.valueOf(code), result);

                        } else

                            callback.onError(response.message());

                    } else {

                        callback.onError("网络请求失败,请稍后重试");

                    }

                }

            });

        }

        public interface ResultCallback {

            void onResponse(String code, String response);

            void onError(String msg);

        }

    }

    三、在你需要判断是有获取到cookie地方使用

    SharedPrefsCookiePersistor sharedPrefsCookiePersistor = new SharedPrefsCookiePersistor(StartActivity.this);

    List<Cookie> cookies = sharedPrefsCookiePersistor.loadAll();

    相关文章

      网友评论

          本文标题:android okhttp3自动保存cookie(二)

          本文链接:https://www.haomeiwen.com/subject/nfrooktx.html