首页 > 解决方案 > Spring引导路径参数url编码问题

问题描述

我有一个弹簧启动应用程序,在我的一个控制器中,我有一个来自路径参数的字符串。我的控制器如下所示:

控制器.java

@GetMapping(value=“/id/{txt}/user”)
public ResponseEntity<MyUser> getUser(@PathVariable String txt) {

}

在我的请求中,我会将 txt 值作为带有一些 url 编码字符的字符串。以下是请求的示例:

/id/Siney6jginshbnsu%252Fghshs%253D

但是当我调试应用程序时,路径变量 txt 是:

/id/Siney6jginshbnsu%2Fghshs%3D

问题是我正在使用 .equals 对 txt 进行字符串比较,并且由于上述编码/解码问题,我看到了这个问题。

有什么方法可以完全按原样从请求中获取 url 编码的字符串?

我知道我可以尝试对添加 %25 的 txt 进行编码,但问题是我可能在字符串中有 % 会将其编码为 %25。因此,如果有人可以提供帮助或建议解决此问题的方法,我们将不胜感激。

提前致谢。

标签: javaspring-booturlencodepath-variables

解决方案


@GetMapping("/id/{txt}/user")
public ResponseEntity<MyUser> getUser(HttpServletRequest request, @PathVariable(name="txt") String txt) {
    String urlNotEncoded = request.getRequestURI();
    ...
}

这样 urlNotEncoded 包含:“/id/Siney6jginshbnsu%252Fghshs%253D/user”,此时您可以创建自己的函数来提取 txt。


推荐阅读