Spring怎么又 bug 了,响应结果居然乱码了?

简介: Spring怎么又 bug 了,响应结果居然乱码了?

1.png换个方式访问该接口,示例如下:

1.png

期待"JavaEdge:dev 666",但是运行上述代码后,你会发现结果却是下面这样:

image.png

why?

解析

这就要求精通 URL 的处理:

image.png

UriComponentsBuilder#toUriString:

image.png

URL Encode

image.png

调用栈如下:

image.png

image.png

至此,都还是正常的,但是当我们把 URL 转化成 String,再通过如下语句发送请求时:

image.png

会发现,它会再进行一次编码:

image.png

至此,你应该理解为啥出问题了:依案例代码会执行 2 次编码(Encode),所以最终获取意外惊喜!

2 次编码后:

image.png

修正

避免多次转化而发生多次编码:

image.png

目录
相关文章
|
7月前
|
JSON 前端开发 Java
构建健壮的Spring MVC应用:JSON响应与异常处理
构建健壮的Spring MVC应用:JSON响应与异常处理
36 0
|
Java Spring
从@Async案例找到Spring框架的bug:exposeProxy=true不生效原因大剖析+最佳解决方案【享学Spring】(上)
从@Async案例找到Spring框架的bug:exposeProxy=true不生效原因大剖析+最佳解决方案【享学Spring】(上)
|
16小时前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring mvc 响应
【JavaEE进阶】 关于Spring mvc 响应
|
16小时前
|
JSON 前端开发 Java
Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!
Spring MVC响应结合RESTful风格开发,打造具有强大功能和良好体验的Web应用!
|
9月前
|
数据采集 监控 Java
Spring Boot拦截器:精细化控制请求与响应
本篇详细介绍了在Spring Boot中使用拦截器的方法。拦截器是一种强大的机制,可用于在请求处理前后进行操作,如鉴权、日志记录等。文章涵盖了创建拦截器类、注册拦截器以及实际应用案例。通过具体的代码示例,读者可以了解如何在项目中配置和使用拦截器,以实现各种功能需求。拦截器为Spring Boot应用增加了更多的灵活性和可扩展性,能够提升应用的安全性和可维护性。
1056 0
Spring Boot拦截器:精细化控制请求与响应
|
10月前
|
XML 前端开发 安全
kotlin使用spring mvc将接收的字符串生成二维码并响应
使用kotlin制作一个基于`spring mvc`的小demo:接收请求中的字符串参数,用`zxing`将字符串生成出一个二维码,再返回给前端。可以通过此例来了解kotlin与spring的搭配
192 1
|
11月前
|
JSON 安全 数据格式
spring-boot源码分析--响应json 返回值处理
spring-boot源码分析--响应json 返回值处理
|
12月前
|
监控 前端开发 安全
Spring Boot 统一RESTful接口响应和统一异常处理
基于Spring Boot 框架开发的应用程序,大部分都是以提供RESTful接口为主要的目的。前端或者移动端开发人员通过调用后端提供的RESTful接口完成数据的交换。 统一的RESTful接口响应数据结构是基本的开发规范。能够减少团队内部不必要的沟通;减轻接口消费者校验数据的负担;降低其他同事接手代码的难度;提高接口的健壮性和可扩展性。 统一的异常处理,是系统完备性的基本象征。通过对全局异常信息的捕获,能够避免将异常信息和系统敏感信息直接抛给客户端;针对特定类型异常捕获之后可以重新对输出数据做编排,提高交互友好度,同时可以记录异常信息以便监控和分析。
302 0
Spring Boot 统一RESTful接口响应和统一异常处理
|
前端开发 Java 测试技术
Spring基础篇:自定义类型转换和中文字符串返回乱码
自定义类型转换和中文字符串返回乱码
163 0
|
XML 安全 Java
详细解读-Spring响应处理
详细解读-Spring响应处理