当前位置: 首页 > 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.dtcms.com/a/301834.html

相关文章:

  • 2025年7月世界人工智能大会最新消息
  • ABP VNext + Mapster:高性能对象映射
  • C语言——关于指针(逐渐清晰版)
  • MyBatis-Plus 多数据源配置指南
  • Android Framework知识点
  • 单链表的冒泡排序实现:从原理到代码详解
  • Linux指令(2):
  • 《频率之光》
  • 【测试报告】​​云枢馈赠系统(Java+Selenium+Jmeter自动化测试)
  • WebStack-Hugo | 一个静态响应式导航主题
  • 回归预测 | MATLAB实现BiTCN双向时间卷积神经网络多输入单输出回归预测
  • 船舶模型预测控制路径跟踪仿真研究
  • JAVA进阶--MySQL
  • 学习游戏制作记录(改进投掷剑的行为)7.27
  • 分类预测 | MATLAB基于四种先进的优化策略改进蜣螂优化算法(IDBO)的SVM多分类预测
  • 内网后渗透攻击过程(实验环境)--4、权限维持(3)
  • 下载 | Win11 官方精简版,系统占用空间极少!(7月更新、Win 11 IoT物联网 LTSC版、适合老电脑安装使用)
  • 墨者:SQL手工注入漏洞测试(MySQL数据库)
  • 罗盘数据门户:挖掘数据价值,让数据助力更多可能
  • 洛谷 P10446 64位整数乘法-普及-
  • RTOS 基础知识
  • 打开postman后一直空白
  • mcu hardfault
  • Process Monitor学习
  • keil debug失败问题
  • 【二分查找 树状树状】P9588 「MXOI Round 2」队列|普及+
  • 7月27日打卡
  • 【0基础PS】PS工具详解--选择工具--快速选择工具
  • web刷题
  • 卸载某个软件的方法