【已解决】Java 后端使用数组流 Array.stream() 将数组格式的 Cookie 转换成字符串格式

🎉工作中遇到这样一个场景:远程调用某个接口,该接口需要用户的 Cookie 信息进行权限认证,认证通过之后才可以打通并返回数据。

在后端拿到 httpServletRequest 后,调用 getCookies() 方法,返回的是一个 Cookie 类型的数组。Debug 过程中拿到的 cookie 数据结构如下所示:

在这里插入图片描述

因此,需要将数组格式转换为字符串形式,核心代码如下:

private String getCookies(HttpServletRequest request) {
        try {
            Cookie[] cookies = request.getCookies();
            // 将Cookie对象数组转换成字符串形式的Cookie
            if (!CoreTool.isEmpty(cookies)) {
            	// 使用数组流处理
                return  Arrays.stream(cookies)
                        .map(cookie -> cookie.getName() + "=" + cookie.getValue())
                        .collect(Collectors.joining("; "));
            }
        } catch (Exception e) {
            LOGGER.error("获取cookie异常", e);
        }
        return "";
}

类型转换后返回一个字符串格式的 cookie,其内容和在网页端看到的 cookie 内容一致,处理后的 cookie 具体内容以及截图如下:

sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%22KQm5bczi%22%2C%22first_id%22%3A%22184e11a69c8129e-09ca8d731cb9b28-26021851-1327104-184e11a69c9128b%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfbG9naW5faWQiOiJLUW01YmN6aSIsIiRpZGVudGl0eV9jb29raWVfaWQiOiIxODRlMTFhNjljODEyOWUtMDljYThkNzMxY2I5YjI4LTI2MDIxODUxLTEzMjcxMDQtMTg0ZTExYTY5YzkxMjhiIn0%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%22KQm5bczi%22%7D%2C%22%24device_id%22%3A%22184e11a69c8129e-09ca8d731cb9b28-26021851-1327104-184e11a69c9128b%22%7D; sso-token=eyJhbGciOiJIUzI1NiJ9.eyJkZXBhcnRtZW50TmFtZSI6IuWfuuehgOW5s-WPsOe7hCIsImNsaWVudElkIjpudWxsLCJkVXNlcklkIjoiMTgwODI4MTgyMzM3NjEzMzIxIiwidXNlckFjY291bnQiOiJTQzg2MDQiLCJ1c2VyUGhvbmUiOiIxMzU1Mjg2NjY4NSIsImRlcGFydG1lbnRDb2RlIjoiMDI0NTA1MDEiLCJwYXJ0RGVwYXJ0bWVudExpc3QiOm51bGwsInVzZXJFbWFpbCI6Inpob25naHVhLmNoZW5Ad2JzdGFyLmNvbSIsInVzZXJOYW1lIjoi6ZmI5Lit5Y2OIiwiZXhwIjoxNjkzNDgzNTUwLCJ1c2VySWQiOiIzODE3ZmQ5Ni05Y2U5LTRkY2UtODUzMi0wMDNjYzE0YTRkMzcifQ.iRnQquAVvzfJtAX6AUtQGpMe94xLr0bG4EIdykC9idI

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/95068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android12之ABuffer数据处理(三十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

聊聊十大网络安全上市公司,看F5拥有强大安全基因

在应用数量爆炸式增长的当下,包括供应链攻击、零日漏洞及数据泄露在内的安全威胁随处可见。从传统应用到现代应用再到边缘、多云、多中心的安全防护,安全已成为企业数字化转型中的首要挑战。谈到十大网络安全上市公司,拥有强大安全基因的F5是…

若依移动端Ruoyi-App 项目的后端项目入门

后端项目运行 运行报错 Error creating bean with name sysConfigServiceImpl: Invocation of init method failed 数据库创建了。 代码连接数据库地方了也匹配上了。但是还是报错。 分析 : 想起来我电脑从来没有安装过redis 下载安装redis到windows 链接&…

2023京东咖啡机行业数据分析(京东数据分析平台)

如今咖啡的渗透率越来越高,养成咖啡饮用习惯的消费者越来越多,尤其是一二线城市。同时,随着人们收入水平的提高,精致生活理念使人们对咖啡的态度从提神需求逐渐转变为社交需求,国内咖啡机市场的发展空间也逐步增大。 …

5.基于多能互补的热电联供型微网优化运行

MATLAB代码链接:基于多能互补的热电联供型微网优化运行 MATLAB代码:基于多能互补的热电联供型微网优化运行 关键词:多能互补 综合需求响应 热电联产 微网 优化调度 参考文档:《基于多能互补的热电联供型微网优化运行》基本完全…

数据结构之树型结构

相关概念树的表示二叉树二叉树性质二叉树储存 实现一颗二叉树创建遍历(前中后序)获取树中节点个数获取叶子节点个数获取第k层节点个数获取二叉树高度检测值为value元素是否存在层序遍历(需要队列来实现)判断是否为完全二叉树&…

高职教育应对ChatGPT应用的策略

一、完善顶层设计,提升技术水平 在推广ChatGPT平台的过程中,高职院校需要关注技术本身的问题。这就需要在国家和地方政府的引导下,引入更完善的技术顶层设计,提高人工智能在高职教育中的运用水平。具体来说,一方面需要…

C# 多线程交替按照指定顺序执行

1.关于AutoResetEvent和ManualResetEvent的区别解释如下: AutoResetEvent和ManualResetEvent是.NET中的两个线程同步类。它们之间的主要区别在于其释放信号的方式以及对等待线程的影响。 AutoResetEvent的作用是在等待的线程被信号唤醒后,将信号自动重…

Kubernetes(k8s)当中安装并使用ingress暴露应用

Kubernetes当中安装并使用ingress暴露应用 为什么需要Ingress前期准备集群准备LoadBalancer准备 安装Ingress-Nginx下载地址v1.3.1v1.8.1 修改文件v1.3.1v1.8.1修改ingress服务类型配置 执行安装 部署应用通过ingress-nginx暴露应用部署ingress的yaml文件v1.3.1v1.8.1 为什么需…

前端加springboot实现Web Socket连接通讯以及测试流程(包括后端实现心跳检测)

【2023】前端加springboot实现Web Socket连接通讯(包括后端实现心跳检测) 前言一、Web Socket 简绍1 为什么用 websocket? 二、代码实现1、前端(html)1.1、无前端向后端发送消息1.2、有前端向后端发送消息 2、后端具体…

【Android】AES解密抛出异常Cipher functions:OPENSSL_internal:WRONG_FINAL_BLOCK_LENGTH

Java使用AES加密的时候没得问题,但是在解密的时候就出错了,一起来找找原因吧。 首先,Java运行的代码如下,使用AES加解密 Cipher cipher Cipher.getInstance("AES/CBC/NOPadding"); //...主要问题 可调试运行控制台抛…

自动泊车的自动驾驶控制算法

1. 自动泊车系统 自动泊车系统(AutomatedParkingASSiSt,APA)利用车辆搭载的传感器感知车辆周边环境,扫描满足当前车辆停放的障碍物空间车位或线车位,并通过人机交互(HumanMachine Interface,HMI)获取驾驶员对目标车位的选择或自动确定目标车位,自动规划泊车路径,通过控制器向车…

Icon设计神器!这5个软件一定要试试

在界面设计中,Icon既可以为用户指明用途,又可以提升界面设计的质感,可以说是一种必不可少的设计素材。而市面上可以制作的Icon的设计软件也十分丰富,今天本文将选出了5个好用的与大家分享,它们不仅功能强大&#xff0c…

全国首台!浙江机器人产业集团发布垂起固定翼无人机-机器人自动换电机巢

展示突破性创新技术,共话行业发展趋势。8月25日,全国首台垂起固定翼无人机-机器人自动换电机巢新品发布会暨“科创中国宁波”无人机产业趋势分享会在余姚市机器人小镇成功举行。 本次活动在宁波市科学技术协会、余姚市科学技术协会指导下,由浙…

无涯教程-分类算法 - 逻辑回归

逻辑回归是一种监督学习分类算法,用于预测目标变量的概率,目标或因变量的性质是二分法,这意味着将只有两种可能的类。 简而言之,因变量本质上是二进制的,其数据编码为1(代表成功/是)或0(代表失败/否)。 在数学上&…

Ubuntu【系统环境下】【编译安装OpenCV】【C++调用系统opencv库】

Ubuntu【系统环境下】【编译安装OpenCV】【C调用系统opencv库】 前言: 本人需要用C写代码,调用OpenCV库,且要求OpenCV版本号大于4.1.0 由于使用的是18.04的版本,所以apt安装OpenCV的版本始终是3.2.0,非常拉胯&#…

【持续更新中】QAGroup1

OVERVIEW Q&AGroup1一、语言基础1.C语言(1)含参数的宏与函数的不同点(2)sizeof与strlen的区别(3)大/小端(4)strcpy与memcpy的区别(5)extern与static的区别…

登高不系安全带自动识别

登高不系安全带自动识别采用yolov8深度学习算法框架模型,登高不系安全带自动识别能够自动检测和识别登高作业人员是否佩戴安全带,过滤其他类似物体的干扰。登高不系安全带自动识别发现有人员未佩戴安全带,将立即触发预警。根据YOLO的设计&…

面试题-React(七):React组件通信

在React开发中,组件通信是一个核心概念,它使得不同组件能够协同工作,实现更复杂的交互和数据传递。常见的组件通信方式:父传子和子传父 一、父传子通信方式 父组件向子组件传递数据是React中最常见的一种通信方式。这种方式适用…

适配小程序隐私保护指引设置

由于小程序发布了一个公告,那么接下来就是怎么改简单的问题了。毕竟不太想大的改动历史上的代码。尽量简单的适配隐私策略就可以了。 整体思路也是参考现在App普遍的启动就让用户同意隐私策略,不同意不让用,同意了之后才能够继续使用。 公告…