当前位置: 首页 > news >正文

BUG记录——Request接传Json数据中文乱码

发送端代码

@PostMapping("/test")
public R purchase(@RequestBody XFTRequest xftRequest) {String url = "http://xxx.xx.xxx.x:12/api/payrollService/createOAProcess";// 1. 使用静态ObjectMapper实例提高性能ObjectMapper objectMapper = new ObjectMapper();objectMapper.enable(JsonWriteFeature.ESCAPE_NON_ASCII.mappedFeature());try {// 2. 序列化请求对象String jsonRequest = objectMapper.writeValueAsString(xftRequest);// 3. 创建并配置HTTP请求HttpRequest request = HttpRequest.post(url).contentType("application/json; charset=UTF-8")  // 修正为JSON格式.body(jsonRequest)  // 直接使用JSON作为请求体.setConnectionTimeout(60 * 1000)  // 60秒连接超时.setReadTimeout(300 * 1000)      // 300秒读取超时.disableCookie();// 4. 执行请求并获取响应HttpResponse response = request.execute();// 5. 处理响应if (response.isOk()) {String responseBody = response.body();// 6. 可选:解析响应JSON// Map<String, Object> responseMap = objectMapper.readValue(responseBody, Map.class);return R.success(responseBody);} else {// 7. 详细错误处理String errorMsg = String.format("请求失败! 状态码: %d, 错误信息: %s",response.getStatus(), response.body());return R.fail(errorMsg);}} catch (Exception e) {// 8. 改进异常处理String errorMsg = String.format("请求异常: %s - %s",e.getClass().getSimpleName(), e.getMessage());return R.fail(errorMsg);}
}

接收端代码

public class PayrollServiceDoCreatePosting extends HttpServlet {@Path("/payrollService")public static class OAProcessHandle extends BaseBean {public OAProcessHandle() {}@POST@Path("/createOAProcess")public String createProcess(@Context HttpServletRequest request, @Context HttpServletResponse response) throws IOException {StringBuilder sb = new StringBuilder();try (BufferedReader reader = request.getReader()) {String line;while ((line = reader.readLine()) != null) {sb.append(line); // 直接追加,不进行URL解码}}String requestBody = sb.toString();this.writeLog("@@@ 原始请求体: " + requestBody);return JSONObject.toJSONString(apidatas);}}
}

如图中文乱码,搞了一下午,弄了四五个小时,一直以为是接收端的问题,反反复复修改,最后发现是发送端的问题。

发送端代码做修改如下

ObjectMapper objectMapper = new ObjectMapper();
// 添加下面这行代码就可以解决【中文乱码】
objectMapper.enable(JsonWriteFeature.ESCAPE_NON_ASCII.mappedFeature());

http://www.lryc.cn/news/601835.html

相关文章:

  • C语言——————学习笔记(自己看)
  • Oracle 19C RU 19.28 升级和安装
  • Frontiers in Psychology投稿LaTeX(三)
  • Python异常处理:金融风控系统中的救命盾牌
  • 设备分配与回收
  • 6.Pinia快速入门
  • 3.JDK+JRE组件构成与协作
  • LeetCode 刷题【16. 最接近的三数之和、17. 电话号码的字母组合】
  • 推荐系统学习
  • 电子电路设计学习
  • Oracle数据库常用语法详解
  • 逆向入门(43)程序逆向篇-tsrh-crackme
  • C++ auto 类型推导
  • Android MQTT 长连接最佳实践技术分享
  • 5.4 ASPICE适配过程中的实施改进
  • 机械学习初识--什么是机械学习--机械学习有什么重要算法
  • Red靶机攻略
  • 字符串是数据结构还是数据类型?
  • Day44 Java数组08 冒泡排序
  • python中的容器与自定义容器
  • Pinocchio 结合 CasADi 进行 IK 逆运动学及 Mujoco 仿真
  • 09_opencv_遍历操作图像像素
  • CIFAR100数据集实测-基于 AlexNet模型的压缩/Bagging/Boosting 探索
  • 人社部物联网安装调试员的实训平台
  • 深度学习(鱼书)day04--手写数字识别项目实战
  • 网络协议:计算机世界的“交通规则“与“社交礼仪“
  • java--WebSocket简单介绍
  • Flutter开发实战之性能优化与调试
  • 深入解析MIPI C-PHY (四)C-PHY物理层对应的上层协议的深度解析
  • Pytest 参数化进阶:掌握 parametrize 的多种用法