Kha*_*111 7 java spring spring-mvc mockmvc
在测试中使用MockMVC,我需要测试已经URL编码的GET URL:
http://host:port/app/controller/[ALREADY URL ENCODED]
Run Code Online (Sandbox Code Playgroud)
代码:
mockmvc.perform(get("/controller/[ALREADY URL ENCODED]")
Run Code Online (Sandbox Code Playgroud)
但是在日志中我看到URL在到达适当的控制器方法之前已经被再次进行了url编码.有没有办法可以阻止spring mockmvc进行url编码?也许在测试中禁用url编码?
"[ALREADY URL ENCODED]"字符串的真实示例:
MEUwQzBBMD8wPTAJBgUrDgMCGgUABBQ%2Fm36Fj2BE19VBYXRO62zrgIYp0gQVAQazEyvlq22wsMBkRyAeaUiZ%2BhTUAgMGJbQ%3D
Run Code Online (Sandbox Code Playgroud)
这会在控制器看到之前再次对URL进行编码.
这是来自日志(该字符串已被重新编码)
xxxxx [main] DEBUG [o.s.t.w.s.TestDispatcherServlet] DispatcherServlet with name '' processing GET request for [/app/controller/MEUwQzBBMD8wPTAJBgUrDgMCGgUABBQ%252Fm36Fj2BE19VBYXRO62zrgIYp0gQVAQazEyvlq22wsMBkRyAeaUiZ%252BhTUAgMGJbQ%253D]
Run Code Online (Sandbox Code Playgroud)
请注意,如果我使用CURL调用,则spring框架不会执行url编码,并且控制器会获取发送的内容.但是,mockmvc会在进入适当的控制器方法之前进行编码.
curl -X GET http:host:port/app/controller/[ALREADY URL ENCODED]
Run Code Online (Sandbox Code Playgroud)
谢谢.
小智 6
对我有用的是MockMvcRequestBuilders.get(new URI([ENCODED_URL_STRING])).
我猜有另外一种方法MockMvcRequestBuilders.get(String urlTemplate, Object... urlVariables),使用适当的urlVariables,但我没有更深入.
| 归档时间: |
|
| 查看次数: |
2616 次 |
| 最近记录: |