2013-09-06 2 views
1

Я разрабатываю приложение, где я отправки запроса GET на веб-службы REST с помощью @RequestMapping(value = "myURLpattern", method = RequestMethod.GET, produces = "image/png")Синтаксический и кодирование URL перед отправкой на отдых WebService

я наткнулся на ошибку, если кто-то входит # в URL строки запроса он влезает оттуда http://myserver.com:8080/csg?x=1&y=2#4&z=32&p=1

так что я пытался кодировать его через фильтр HTTPRequestWrapper так что # будет заменен %23 использованием URLEncoder.

Моя проблема заключается в кодировании URL, сначала мне нужно прочитать URL(request.getRequestURL()). и getURL снова не могут читать строку после #. request.getRequestURL() вернется только (http://myserver.com:8080/csg?x=1&y=2)

Есть ли другой способ разобрать полный URL-адрес и закодировать его перед отправкой на веб-службу REST?

ответ

2

Это не ошибка. Проверьте это:

What is the meaning of # in URL and how can i use that?

A # в строке запроса URL неправильно. Вы должны закодировать его на стороне клиента, прежде чем отправлять его на свой сервер. Смотрите это: How to pass '#' in query string Это в asp, но вы должны найти эквивалент java.

что-то, чтобы вы начали может быть это один Java URL encoding of query string parameters

+0

Спасибо для вашей справки, так что если кто-то входит # в одном из сайтов поля, как серийный номер: 12 # ser4 то мы не можем разобрать его на стороне сервера. http://myserver.com:8080/csg?serial=12#ser4&manufacture=12-07-2013&warranty=3 для описанного выше сценария, как мы будем его обрабатывать – Krishna

+0

Кодировать его на стороне клиента. Взгляните на функцию encodeURIComponent в javascriopt. encodeURIComponent ('12 # ser4'); сделало бы '12 # ser4 'стать '12% 23ser4', что вы должны отправлять на сервер, поэтому ваш запрос будет выглядеть следующим образом: http://myserver.com:8080/csg?serial=12%23ser4&manufacture= 12-07-2013 & гарантия = 3 –