android - 使用 OkHttpClient 发送 cookie

标签 android cookies okhttp

我正在使用 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/

相关文章:

java - Android:使用 CSS 问题在 WebView 中自定义字体

android - Chrome Android Angular Contenteditable 在修改前验证输入

javascript - 如何使用 js-cookie 创建两个 cookie?

java - OkHttp javax.net.ssl.SSLPeerUnverifiedException : Hostname domain. com 未验证

java - OKHTTP Post FormDataMultiPart

android - 使用Robolectric测试ListPreference时出现RuntimeException

android - 查询 "cont"列上最大值的行

cookies - 如何在Safari的iframe中设置来自外部域的cookie?

php - 使用数据库存储 session 时的 session cookie参数

android - Retrofit2 不发送请求(不使用 OkHttp 进行日志记录)