【发布时间】:2019-01-22 01:25:02
【问题描述】:
我正在使用带有 Java8 的 micronaut 1.0.3。我试图了解 HttpClient 何时以及如何需要编码。
第一个问题:
当我在 URI 中使用带有空格的 HttpClient 时,出现错误:java.lang.IllegalArgumentException: Illegal character in path at index 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 进行编码的正确方法是什么?
https://github.com/gboersma/http-client-encoding-issue 的示例项目。
【问题讨论】:
标签: micronaut