在測試中使用MockMVC的URL編碼,我需要測試已經URL編碼的GET網址:春天4.1.1,mockmvc,不想HTTP GET請求
http://host:port/app/controller/[ALREADY URL ENCODED]
代碼:
mockmvc.perform(get("/controller/[ALREADY URL ENCODED]")
但是,在日誌中,我看到該URL已被url編碼,然後它纔到達適當的控制器方法。有沒有一種方法可以防止spring mockmvc進行網址編碼?也許在測試中禁用網址編碼?在 「[ALREADY URL編碼]」 字符串
真實的例子:
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]
謝謝。
請舉一個真實的例子。 Spring將只對URL進行必要的編碼。 – 2014-11-03 20:36:32
用已編碼的url字符串的實例編輯 – Khanna111 2014-11-03 20:49:11
現在請發佈您在控制器端收到的內容。你怎麼知道它被重新編碼?第二次編碼哪些字符? – 2014-11-03 20:50:59