API响应加密字符串无法传递至解密端点问题排查
问题分析与修复
问题描述
调用API服务得到加密字符串响应:
Kcc6rcdO41XJ9ZNavb6AeJXwM0pxEfRLUipPpIM3ayRrLT2tWp4xD/0B28/W09siYJ2dVOZGOA1jUSMZLxXdFZimJHrzxZKuiSvV+ECPY4CyyTi3Sp1CvKuNLERFu4iQ8knlq00Fj2nL8qVyu19WOg==
尝试将该字符串作为负载传递给解密接口时,接口始终返回null,传递失败。
错误原因
代码存在两处关键错误:
$response2是纯文本Base64加密字符串,并非JSON格式,调用json_decode($response2)会直接返回null- 再次对
null执行json_decode($json),结果仍为null,最终传递给解密接口的value字段值为null,导致接口返回异常
修复方案
直接使用$response2的原始响应内容,无需任何json_decode处理:
// 获取加密字符串响应的原始内容 $encryptedString = $response2->body(); // 构造解密接口的请求负载 $fields3 = [ "value" => $encryptedString ]; // 发送请求到解密接口 $response3 = Http::withHeaders($headers)->post($url3, $fields3);
补充说明
如果$response2返回的是JSON结构(例如{"data": "加密字符串"}),才需要用json_decode解析,但根据你提供的$response2值,它是纯Base64字符串,直接取响应体即可。
内容的提问来源于stack exchange,提问作者Fiyinfoluwa Osuntola
相关产品推荐
相关产品推荐

