如何禁止spring对RequestBody默认进行urlencode?

anel 2019-03-08 12:21:14
客户端post内容:
{"name":"abc_def","num":123}

服务端:
@RequestMapping(value = "/post", method = RequestMethod.POST)
public void post(@RequestBody String str, HttpServletResponse response) throws IOException{
System.out.println(str);
PrintWriter out = response.getWriter();
out.write("ok");
}

//str的内容:
%7B%22name%22%3A%22abc_def%22%2C%22num%22%3A123%7D=

这里系统已经对RequestBody做了urlencode,虽然可以用urldecode还原,但我希望系统不做urlencode,不知如何设置?


...全文
1298 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41206019 2021-04-15
  • 打赏
  • 举报
回复
org.apache.coyote.Request 该类会使用URLDecoder工具类对请求的name以及value进行decode操作
lixuebo520 2019-03-21
  • 打赏
  • 举报
回复
在客户端AJAX提交的时候设置contentType,我以jquery为例子: $.ajax({ url: “xxx", type: "POST", dataType: "json", contentType: "application/json; charset=utf-8", async:false, data:"{'aa':'bb'}", success: function(data) { alert(data); }, error: function() { } });
stacksoverflow 2019-03-15
  • 打赏
  • 举报
回复
这个问题你要问浏览器,浏览器就是编码后发给你的,所以你接收到肯定是编码过的。 应该从客户端着手。 或者你写个socket,用你的系统客户端往你的socket上发送请求,打印出来看看是不是编码过的,如果不是的话,那在寻求服务端解决方案。 如果是的话,寻求一下客户端解决方案。
anel 2019-03-15
  • 打赏
  • 举报
回复
没 人 会 吗?
anel 2019-03-15
  • 打赏
  • 举报
回复


我在linux下用c++ 做了http_server,使用同一的客户端,看到post内容并无做urlencode,说明urlencode是spring做的。
anel 2019-03-13
  • 打赏
  • 举报
回复
to 鱼七:
还是不行,仍然做了urlencode,还有参数charset,forceRequest,forceResponse分别是什么?
独恋猫的鱼~ 2019-03-12
  • 打赏
  • 举报
回复
CharacterEncodingFilter,并在Application中注入它 @Bean() @ConfigurationProperties(prefix = "spring.http.encoding") @ConfigurationPropertiesBinding public MutiCharacterEncodingFilter mutiCharacterEncodingFilter(){ MutiCharacterEncodingFilter encodingFilter = new MutiCharacterEncodingFilter(); encodingFilter.setEncoding(charset); encodingFilter.setForceRequestEncoding(forceRequest); encodingFilter.setForceResponseEncoding(forceResponse); return encodingFilter; }
anel 2019-03-11
  • 打赏
  • 举报
回复
为什么系统对RequestBody做了urlencode操作?
anel 2019-03-08
  • 打赏
  • 举报
回复
to nowledgeAndWistom:
岂不是要在客户端改?服务端改不了吗?
KnowledgeAndWistom 2019-03-08
  • 打赏
  • 举报
回复
尝试content-type设置成非application/x-www-form-urlencoded格式

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧