У меня есть конечная точка Get, которая принимает строку запроса в качестве параметра запроса. Проблема с конечной точкой в том, что строка параметра запроса может содержать такие символы, как?, / Etc, что вызывает проблемы. Есть ли способ сопоставить строку, которая содержит?, / Etc, с переменной в контроллере rest?
Уже пытался использовать @PathVariable вместо @RequestParam, но он по-прежнему неправильно читает значение.
При использовании @PathVariable для сопоставления URI,? становится опущенным.
При использовании @RequestParam создается исключение. Обеспечивается отслеживание стека.
@GetMapping("/getResult")
public @ResponseBody ResponseEntity<String> getData(@RequestParam(value="text") String text) {
//Call to service layer passing text as a param
return new ResponseEntity<String>("GET Response", HttpStatus.OK);
}
URL : 'localhost/getResult?text=How you doing?'
StackTrace:
java.lang.IllegalArgumentException: в методе найден недопустимый символ
название. Имена методов HTTP должны быть токенами Ошибка разбора HTTP-запроса
Примечание заголовка: дальнейшие ошибки синтаксического анализа заголовка HTTP будут
зарегистрирован на уровне DEBUG.
java.lang.IllegalArgumentException: в методе найден недопустимый символ
название. Имена методов HTTP должны быть токенами в
org.apache.coyote.http11.Http11InputBuffer.parseRequestLine (Http11InputBuffer.java:422)
~ [tomcat-embed-core-8.5.14.jar: 8.5.14] в
org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:683)
~ [tomcat-embed-core-8.5.14.jar: 8.5.14] в
org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66)
[tomcat-embed-core-8.5.14.jar: 8.5.14] в
org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:861)
[tomcat-embed-core-8.5.14.jar: 8.5.14] в
org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1455)
[tomcat-embed-core-8.5.14.jar: 8.5.14] в
org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49)
[tomcat-embed-core-8.5.14.jar: 8.5.14] в
java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
[na: 1.8.0_05] в
java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617)
[na: 1.8.0_05] в
org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61)
[tomcat-embed-core-8.5.14.jar: 8.5.14] в
java.lang.Thread.run (Thread.java:745) [na: 1.8.0_05]
Для ожидаемого результата я хотел бы отобразить строку "Как дела?" к переменной пути или переменной параметра запроса со всей целой строкой, вместо '?' исключается.