HTTP POST с закодированным URL не работает - PullRequest
1 голос
/ 22 декабря 2011

Я реализую веб-API REST.Некоторые данные находятся в теле запроса как JSON, другие - в самом URL, например, http://myhost/webapp/api/series/GMT/OTHER-DATA.

Ключевым параметром здесь является GMT, который является идентификатором часового пояса.Проблема возникает, когда идентификатор часового пояса содержит косую черту, например Europe/London.Поскольку косая черта - это специальный символ, я закодировал этот параметр, поэтому я получил http://myhost/webapp/api/series/Europe%2FLondon/OTHER-DATA.

И мой (веб-клиент) не смог связаться с сервером и получил 404. Я изменил метод с POST, чтобы получить и увидел, что все работаетхорошо.

Поскольку я должен использовать POST здесь, я нашел некрасивый обходной путь, но интересно знать, почему это происходит?

Я использую Spring MVC, но я не думаю, что это уместно здесь: я пытался поставить точку останова в Spring 101 * и в нескольких фильтрах Spring Spring, которые обычно вызываются, когда все идет хорошо, и я этого не делалвидите, что даже один из них вызывается, когда URL содержит %2F.

Я провел еще один эксперимент.Вместо этого я попытался использовать %20 (пробел) и увидел, что он отлично работает с GET и не работает с POST.

Я был бы признателен, если бы знал, есть ли "хорошее" решение проблемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...