Android Retrofit session - cookie

标签 android session cookies retrofit

我正在使用 Retrofit 反序列化来自 Web 服务器的 json 请求,并且我需要在我的应用程序中创建一个 session (cookie?)(该 session 应在 120 分钟内过期)。问题是我不知道如何实现它。

private RestAdapter adapter = RestAdapter.Builder().setClient(????).setServer("http://192.168.0.1").build();

仅当应用程序正在运行时,此 session 才应持续存在。

最低 SDK 要求为 8

最佳答案

好吧,你知道改造实际上使用了框架内部的okhttp。

你应该知道“拦截器”

当你在retrofit中初始化一个okhttp时,你应该调用addInterceptor,就像这样:

 OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.retryOnConnectionFailure(true);
        builder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
        builder.writeTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
        builder.readTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);
        builder.addInterceptor(new ZCommonIntercepter());

自定义您自己的拦截器扩展拦截器。

并通过response.header("Set-cookie")获取sessionId,将其保存为常量或内存中的其他内容。

此后的每个请求都应该删除原始 header (“cookie”)

和addHeader(你已经保存的东西)

很抱歉我的母语不是英语。如果你不能理解我。我只给你一些关键字,你可以谷歌一下。

---关键词---

  • okhttp 中的拦截器

  • 请求头或响应头中的cookie

关于Android Retrofit session - cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19432314/

相关文章:

android - 使用 osmdroid 时不显示 map

android - 如何使用 kotlin 在 android 中添加 http 日志拦截器和另一个拦截器?

php - 尝试为 Apache 负载均衡器声明自定义 cookie 时出现错误

Javascript document.cookie 总是返回空字符串

java - 使用 Lint 和 SonarQube 分析 Android 项目

c# - 在 C# ASP.NET 中,Java 中的同步块(synchronized block)等效于什么?

python - 如何使用 sqlalchemy 连接池创建 session ?

Javascript - 设置浏览器 Cookie

javascript - 重复/循环 javascript 函数来检查 cookie 是否已更改

android - 从服务更新LiveData