我用的是KJFrameForAndroid写的,请求过去的登陆sessionid
与请求消息数据获取的sessionid不同,这样在服务器就如同没有登陆去获取
消息数据,这是不行的,大家有什么办法可以解决呢?
android 每次请求服务器的sessionid不一样
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 秋风お亦冷 2023-07-17 17:41关注
在 Android 应用中,每次向服务器发起请求时,如果每次请求的
sessionid
都不一样,可能是因为每次请求时都创建了一个新的 HTTP 连接,并且没有复用已经建立的连接。这可能会导致服务器无法正确地管理客户端的会话状态,从而导致sessionid
不一致的问题。为了解决这个问题,可以考虑使用 HTTP 连接池来复用已经建立的连接。在 Android 中,可以使用 Apache HttpClient 或 OkHttp 等第三方库来实现连接池的功能。这些库都提供了连接池的管理机制,可以帮助应用复用已经建立的连接,从而减少每次请求时建立新连接的开销。
另外,如果服务器端的 session 管理方式是基于 cookie 的,那么还需要确保每次请求都携带相同的 cookie。在 Android 中,可以通过设置请求头来实现这个功能。例如,在使用 OkHttp 发起请求时,可以通过设置 Request.Builder 的 header 字段来添加 Cookie 头部,示例代码如下:
OkHttpClient client = new OkHttpClient.Builder() .cookieJar(new JavaNetCookieJar(cookieManager)) .build(); Request request = new Request.Builder() .url(url) .addHeader("Cookie", "sessionid=" + sessionId) .build(); Response response = client.newCall(request).execute();
其中,
cookieManager
是一个 CookieManager 对象,用于管理应用的 cookie。sessionId
是服务器返回的 session id,可以保存在应用中供后续使用。如果是Nginx作为负载均衡,代码内不配置session一致性的话,就在配置nginx:加入ip_hash开启会话保持
upstream group { ip_hash; server 172.23.0.1; server 172.23.0.2; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 stata安慰剂检验作图但是真实值不出现在图上
- ¥15 c程序不知道为什么得不到结果
- ¥40 复杂的限制性的商函数处理
- ¥15 程序不包含适用于入口点的静态Main方法
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题