原因
- HTTP请求头中的"body"参数值本身就是以乱码形式传递的。
- 在HTTP协议中,请求头参数值是以字节流形式传输的,并且默认使用ISO-8859-1字符编码进行解码。
- 因此,如果请求头参数值包含非ASCII字符(例如中文字符),在解码时会出现乱码。
解决方法
将请求头参数值的字符编码进行转换
String body = new String(headers.getFirst("body").getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
注意
在实验环境中使用UTF_8发送http请求