带编码URL的HTTP POST不起作用

时间:2011-12-21 20:02:45

标签: java http spring-mvc

我正在实施REST Web API。一些数据在请求体中作为JSON,另一些数据作为URL本身,例如http://myhost/webapp/api/series/GMT/OTHER-DATA

此处的关键参数是GMT,它是时区标识符。 当时区标识符包含斜杠时发生问题,例如Europe/London。由于斜杠是一个特殊字符,我编码了参数,因此我得到了http://myhost/webapp/api/series/Europe%2FLondon/OTHER-DATA

我的(网络)客户端无法访问服务器并获得404.我将方法从POST更改为get并看到一切正常。

由于我必须在这里使用POST,我现在发现了一些丑陋的解决办法,但有趣的是知道为什么会发生这种情况?

我正在使用Spring MVC,但我不认为它在这里是相关的:我试图将断点放入Spring的DispatcherServlet和几个Spring的HTTP过滤器中,这些过滤器通常在一切进展顺利时被调用而我没有看到当URL包含%2F时,甚至会调用其中一个。

我做了另一个实验。我尝试使用%20(空格),并发现它可以正常使用GET并且不适用于POST。

我很高兴知道这个问题是否有“好”的解决方案?

0 个答案:

没有答案
相关问题