请求头设置没有生效

说明:记录一次使用kong.unirest发起http请求,添加请求头的坑。

场景

发起一个http请求,需要带上签名等请求头,如下:

java 复制代码
	@Override
	protected String run() {
	   String dataString = JSON.toJSONString(data);
	   String signature = 加密工具,生成签名(signPrivateKey, dataString);
	   // 将签名放到请求头中
	   Unirest.config().getDefaultHeaders().add("sign", sign);
	   HttpResponse<String> response = Unirest.post(url.toString())
	           .queryString("type", type)
	           .contentType(ContentType.APPLICATION_JSON.toString())
	           .body(dataString)
	           .asString();
	
	   if (response.isSuccess()) {
	       return "调用成功";
	   }
	
	   throw new Exception("调用失败");
	}

我使用 Unirest.config().getDefaultHeaders().add("sign", sign); 的方式,将数据加到请求头上的。然后在调试时,发现首次通过验证后,后面取签名验证,都验证不通过,很疑惑。

解决

增加打印日志后,发现除了首次,后面传递过去的签名请求头 sign 都是首次的数据。而看我上面的代码,是需要根据每次的数据内容,产生签名,然后加到请求头上。就是说,后面产生的sign,没有覆盖上一次请求的sign

不能用上面这种方式,要用下面这种:

java 复制代码
	@Override
	protected String run() {
	    String dataString = JSON.toJSONString(data);
	    String signature = 加密工具,生成签名(signPrivateKey, dataString);
	    HttpResponse<String> response = Unirest.post(url.toString())
	            .queryString("type", type)
	            .contentType(ContentType.APPLICATION_JSON.toString())
	        	.header("sign", sign)
	            .body(dataString)
	            .asString();
	
	    if (response.isSuccess()) {
	        return "调用成功";
	    }
	
	    throw new Exception("调用失败");
	}

添加请求头,要放到Unirest.post发起调用时

首次发布

hezhongying.blog.csdn.net/article/det...

相关推荐
咩咩啃树皮11 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
阳光是sunny11 小时前
LangGraph中的Reducer是什么
前端·人工智能·后端
灯澜忆梦12 小时前
GO_并发编程---定时器
开发语言·后端·golang
阳光是sunny12 小时前
从链到图:LangGraph 入门基础全解析
前端·人工智能·后端
鱟鲥鳚12 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
皮皮林55112 小时前
开源实力派,给本地 AI 装上深度调研能力,一张 3090 跑到 95.7 分!
后端
努力的小雨13 小时前
把 Windows 桌面图标做成一个会自己运转的小世界
后端
武子康13 小时前
Search Console Platform Properties 扩大 SEO 资产边界:从 Page Ranking 到 Topic Coverage(5 类误读边界 + 3 表数据层设计)
前端·人工智能·后端
大模型码小白13 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司14 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求