#java #kotlin #intellij-idea #ktor
Вопрос:
Я только что создал проект ktor из встроенных шаблонов idea(2.1.2.4416.7), и при открытии веб-страницы в консоли я получаю следующую ошибку:
2021-06-27 12:16:34.158 [main] INFO ktor.application - Responding at http://0.0.0.0:8080
2021-06-27 12:16:41.583 [eventLoopGroupProxy-4-1] TRACE ktor.application - Failed to decode request
java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)
at io.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:64)
at io.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:95)
at io.netty.handler.codec.http.HttpObjectDecoder.decode(HttpObjectDecoder.java:249)
at io.netty.handler.codec.http.HttpServerCodec$HttpServerRequestDecoder.decode(HttpServerCodec.java:123)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:508)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:447)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda-1$lambda-0(NettyApplicationEngine.kt:251)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Есть какие-нибудь идеи? Он использует java версии 11, gradle версии 7.1 и kotlin версии 1.6.
Вот исходный код на github: https://github.com/Digital-Nomad/thedrewreport
Комментарии:
1. можете ли вы поделиться кодом на github?
2. Я могу воспроизвести вашу проблему, если я принудительно подключусь к HTTP2 (
curl --http2-prior-knowledge http://0.0.0.0:8080
). Проблема в том, что движок Netty сейчас не поддерживает HTTP2. Не могли бы вы, пожалуйста, описать, как вы делаете запрос?3. Я использую firefox, чтобы открыть страницу с образцом.