我正在使用 Okhttp3 来发出 http get/post 请求。
我正在使用 PersistentCookiejar
来保存 cookie,即使在应用程序关闭后又重新启动时也是如此。
但是,当我进行 HTTP 调用时,OkHTTPcClient 不会将 cookie 从 android 设备发送到 web 服务器。不确定如何解决它,如果 http 客户端不在每个 http 请求上发送 cookie,我认为保留 cookie 没有任何意义。
这是我用来初始化 http 客户端以及我如何发出 http 请求的代码。
cookieJar =
new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(this));
client = new OkHttpClient.Builder()
.cookieJar(cookieJar)
.build();
client.newCall(request).enqueue(new Callback() {
/** cookies are not sent to server.
**/
最佳答案
调试了一段时间后,我弄明白了是怎么回事。
我的服务器发回的 Cookie( session Cookie)没有过期属性。如果没有 expires
属性,PersistentCookieJar
不会保留 cookie。因此,这些 cookie 仅保存在内存中的 cookie 缓存中,不会在 Activity 之间共享(至少我的代码没有共享 cookie 缓存。我只共享持久存储)。
更改我的服务器端代码以发送带有过期时间戳的 cookie 解决了这个问题。
关于android - 使用 OkHttpClient 发送 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35741982/