2016-03-02 80 views
1

我使用Okhttp3来发送http get/post请求。使用OkHttpClient发送cookies

即使在应用程序关闭时,我仍然使用PersistentCookiejar来保存Cookie,并且稍后再次启动。

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

你能确认cookies正在被保存吗? –

+0

有什么我应该做的,以保存饼干。不要在收到回复后自动保存。当新的CallBack()。onResponse()被调用? – user462455

+0

我应该使用CookieManager来确保cookie在响应后保存吗? – user462455

回答

1

经过一段时间的调试后,我想清楚发生了什么事情。

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

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