在测试中使用 MockMVC,我需要测试一个已经被 URL 编码的 GET URL:
http://host:port/app/controller/[ALREADY URL ENCODED]
编码:
mockmvc.perform(get("/controller/[ALREADY URL ENCODED]")
但是,在日志中,我看到 URL 在到达适当的控制器方法之前已经再次进行了 url 编码。有没有办法可以防止 spring mockmvc 进行 url 编码?也许在测试中禁用 url 编码?
“[ALREADY URL ENCODED]”字符串的真实示例:
MEUwQzBBMD8wPTAJBgUrDgMCGgUABBQ%2Fm36Fj2BE19VBYXRO62zrgIYp0gQVAQazEyvlq22wsMBkRyAeaUiZ%2BhTUAgMGJbQ%3D
这会在控制器看到它之前再次对 URL 进行编码。
这是来自日志(字符串已再次被 url 编码)
xxxxx [main] DEBUG [o.s.t.w.s.TestDispatcherServlet] DispatcherServlet with name '' processing GET request for [/app/controller/MEUwQzBBMD8wPTAJBgUrDgMCGgUABBQ%252Fm36Fj2BE19VBYXRO62zrgIYp0gQVAQazEyvlq22wsMBkRyAeaUiZ%252BhTUAgMGJbQ%253D]
请注意,如果我使用 CURL 调用,则 spring 框架不会执行 url 编码,并且控制器会获取发送的内容。然而,mockmvc 会在它到达适当的控制器方法之前进行编码。
curl -X GET http:host:port/app/controller/[ALREADY URL ENCODED]
谢谢。