我正在使用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.
**/
答案 0 :(得分:1)
经过一段时间的调试后,我发现了最新情况。
我的服务器发回的Cookie(会话cookie)没有expires属性。并且PersistentCookieJar
在没有expires
属性的情况下不会保留Cookie。因此,这些cookie只保存了cookie缓存,它在内存中并且不在活动之间共享(至少我的代码没有共享cookie缓存。我只是共享持久存储)。
更改我的服务器端代码以发送带有过期时间戳的Cookie修复了该问题。