Я использую micronaut 1.0.3 с Java8.Я пытаюсь понять, когда и как требуется кодировка для HttpClient.
Первая проблема:
Когда я использую HttpClient с пробелами в URI, я получаю сообщение об ошибке: java.lang.IllegalArgumentException:Недопустимый символ в пути с индексом 6: / bleah bleah
Вопрос. Нужно ли кодировать URI?Я ожидаю, что HttpClient сделает это для меня.
Вторая проблема:
Я пытаюсь кодировать, используя Java URLEncoder, который преобразует пространство в +.Это не соответствует конечной точке на сервере.На сервере я получаю следующее:
18:26:02.261 [nioEventLoopGroup-1-9] DEBUG i.m.h.server.netty.NettyHttpServer - Server localhost:8081 Received Request: GET /bleah+bleah
18:26:02.261 [nioEventLoopGroup-1-9] DEBUG i.m.h.s.netty.RoutingInBoundHandler - Matching route GET - /bleah+bleah
18:26:02.262 [nioEventLoopGroup-1-9] DEBUG i.m.h.s.netty.RoutingInBoundHandler - No matching route found for URI /bleah+bleah and method GET
18:26:02.262 [nioEventLoopGroup-1-9] DEBUG i.m.h.s.netty.RoutingInBoundHandler - Encoding emitted response object [Page Not Found] using codec: io.micronaut.jackson.codec.JsonMediaTypeCodec@4a8b5227
Если я кодирую пробелы с использованием% 20, все работает хорошо.
Вопрос: почему URL-адрес не совпадает?Как правильно кодировать URL?
Пример проекта на https://github.com/gboersma/http-client-encoding-issue.