首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OkHttp CookieJar saveFromResponse方法

OkHttp CookieJar saveFromResponse方法
EN

Stack Overflow用户
提问于 2017-08-31 17:56:01
回答 1查看 976关注 0票数 2

我创建了一个使用CookieJar的简单项目。现在,我正在尝试理解saveFromResponse方法什么时候起作用。但是我在我的日志中看到loadForRequest工作正常,但是我没有看到saveFromResponse日志。为什么?这个方法在什么时候起作用?如果我们使用cookies,我们只能使用截取方法吗?或者我们在使用CookieJar时可能有特殊情况?

代码语言:javascript
复制
 OkHttpClient client = new OkHttpClient.Builder()
              .addInterceptor(new ReceivedCookiesInterceptor())
              .cookieJar(new CookieJar() {
                 private final HashMap<HttpUrl, List<Cookie>> cookieStore = new HashMap<>();
                        @Override
                        public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
                                    Log.d(TAG,"saveFromResponse");
                                    cookieStore.put(url, cookies);
                        }
                        @Override
                        public List<Cookie> loadForRequest(HttpUrl url) {
                                    Log.d(TAG,"loadForRequest");
                                    List<Cookie> cookies = cookieStore.get(url);
                                    return cookies != null ? cookies : new ArrayList<Cookie>();
                                        }
                                    })
                                    .build();

                            Request request = new Request.Builder()
                                    .url("http://www.publicobject.com/helloworld.txt")
                                    .build();

                            Response response = client.newCall(request).execute();

                            response.body().close();
EN

回答 1

Stack Overflow用户

发布于 2018-08-16 18:19:42

我知道现在有点晚了,但我一直在为同样的问题而苦苦挣扎,然后我意识到只有在新的cookies上才会调用saveFromResponse。这意味着saveFromResponse不会收到您在loadForRequest上设置的所有cookies。

这是我可以推断出的行为,但我不确定它是否是应该的行为,因为这样你就不能从远程服务器获得Cookie值更新。

您是否经历过这样的行为:只有在创建OkHttpClient后的第一个请求时才会收到cookie,而不会在其余请求中收到cookie?

求求你,有更多知识的人能给我们一些启发?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45978531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档