POST请求参数未做URLEncoding,中文参数在tomcat正常显示,jboss中乱码

本文讲述了在使用httpclient发送携带中文参数的POST请求时,参数在Tomcat上正常显示,但在Jboss上出现乱码的问题。经过分析,发现Jboss在处理请求参数时进行了特殊处理,导致了乱码。解决方案是进行URLEncoding处理。
摘要由CSDN通过智能技术生成

POST请求参数未做URLEncoding,中文参数在tomcat正常显示,jboss中乱码

环境

http客户端:httpclient-4.5.6
应用容器:spring-boot-2.0.4.RELEASE
开发容器:Tomcat8.5(内嵌)
测试容器:Jboss7.1

场景

使用http客户端向服务端发送携带中文参数的POST请求

// 伪代码 
HttpEntity e = new StringEntity("city=重庆", "UTF-8");
post.setEntity(e);
httpClient.execute(post);

服务端打印入参代码

@RestController
public class FakeController {
   
	@PostMapping("/say")
   	public String say(@RequestParam String city) {
   
   		LogFactory.getLogger().info("city:{}", city);
   		return city;
   }
}

在tomcat上正常显示
2019-12-26 16:02:24.728 INFO [city:重庆]
在jboss上显示乱码
2019-12-26 16:02:24.728 INFO [city:←ヌヘ¥ᄎニ]

猜想

  1. 服务器未设置URIEncoding
  2. 服务器容器对于请求做了特殊处理

验证

猜想1 (不起作用)

官网的解决办法是在standalone.xml中加入以下内容(extensions节点后面)

<system-properties>
     <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
     <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
</system-properties>

猜想2

根据《Web容器自动对HTTP请求中参数进行URLDecode处理》1的思路,我得知在真正处理Htt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值