使用OkHttpClient

时间:2016-03-02 08:30:40

标签: android cookies okhttp okhttp3

我正在使用Okhttp3来制作http get / post请求。

我正在使用PersistentCookiejar来保留Cookie,即使应用程序已关闭,之后又会重新启动。

但是,当我进行HTTP调用时,OkHTTpClient不会将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.
      **/

1 个答案:

答案 0 :(得分:1)

经过一段时间的调试后,我发现了最新情况。

我的服务器发回的Cookie(会话cookie)没有expires属性。并且PersistentCookieJar在没有expires属性的情况下不会保留Cookie。因此,这些cookie只保存了cookie缓存,它在内存中并且不在活动之间共享(至少我的代码没有共享cookie缓存。我只是共享持久存储)。

更改我的服务器端代码以发送带有过期时间戳的Cookie修复了该问题。