当前位置: 首页 > 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.xdnf.cn/news/1198837.html

相关文章:

  • Spring Boot + @RefreshScope:动态刷新配置的终极指南
  • Keepalived + LVS-DR 高可用与负载均衡实验
  • Java全栈面试实战:从JVM到AI的技术演进之路
  • OpenResty 高并发揭秘:架构优势与 Linux 优化实践
  • Unity TAA
  • CentOS网卡未被托管解决记录
  • PDF文件被加密限制怎么办?专业级解除方案分享
  • Python|OpenCV-实现快速处理图像的方法(23)
  • GPT-4o实战应用指南:从入门到精通的技术心得
  • 昇思学习营-模型推理和性能优化
  • 【AcWing 838题解】堆排序
  • MySQL - 主从复制与读写分离
  • 一分钟部署一个导航网站
  • 递归查询美国加速-技术演进与行业应用深度解析
  • CentOS 9 配置国内 YUM 源
  • 2025第15届上海生物发酵展将于8月7号启幕
  • 高级 Tkinter:使用类
  • 通过不同坐标系下的两个向量,求解旋转矩阵
  • 《C++ list 完全指南:list的模拟实现》
  • 《频率之光:维度回响》
  • mac电脑安装docker图文教程
  • 【笔记】活度系数推导
  • Linux驱动21 --- FFMPEG 音频 API
  • 深度解析 inaSpeechSegmenter:高效音频语音分割与检测开源工具
  • STL——list
  • Web Worker:解锁浏览器多线程,提升前端性能与体验
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博文章数据可视化分析-文章分类下拉框实现
  • PHP框架之Laravel框架教程:3. 数据库操作(简要)
  • Keil MDK 嵌入式开发问题:warning: #223-D: function “sprintf“ declared implicitly
  • Flutter开发实战之测试驱动开发