Ktor Netty 服务器发送空响应

Posted

技术标签:

【中文标题】Ktor Netty 服务器发送空响应【英文标题】:Ktor Netty Server sending an empty response 【发布时间】:2019-03-10 04:33:28 【问题描述】:

我正在使用 ktor 0.9.5。我正在尝试一个简单的例子。但是当尝试连接到服务器时,我得到 ERR_EMPTY_RESPONSE。这是我的代码。

fun main(args: Array<String>) 
    embeddedServer(Netty, port = 8080, host = "localhost") 
        install(DefaultHeaders)
        install(CallLogging)
        routing 
            get(path = "/") 
                call.respondText("Hello World!!")
            

        
    .start()

做了一些研究,我发现将项目更改为 Maven 可以解决问题,但由于我的组织规则,我不能这样做。任何其他解决方案...在此先感谢。

我在call.respondText("Hello World!!") 之前添加了一个println("sometext"),但它从未执行过。

【问题讨论】:

"将项目更改为 Maven" - 表示您当前正在使用 gradle?您发布的代码使用 gradle 对我来说很好。你能告诉我们你正在发出的http请求吗? 实际上我不能使用任何依赖工具,甚至不能使用 gradle。我的公司代理不要让我通过回购。我自己下载了每一个依赖项(真的很辛苦)你不认为我错过了任何依赖,因为服务器启动时没有 ClassNotFound Exception。 有任何方法可以下载依赖列表而不实际下载它。所以我可以一一检查我需要什么,我有什么。 【参考方案1】:

由于 ERR_EMPTY_RESPONSE 错误,我猜您是从 Google Chrome 浏览器请求服务器。正确的 ? 您是否尝试从另一台计算机连接到服务器?如果是这样,它将不起作用,因为您已将服务器设置为仅响应来自 localhost 的请求。

embeddedServer(Netty, port = 8080, host = "localhost")

即使你添加了一个 println() 它也不会执行。 尝试从 EmbeddedServer() 参数中删除 host = "localhost" 重新测试。

【讨论】:

你说得对,我正在使用谷歌浏览器,但我的 url 请求是 127.0.0.1:8080。所以它是本地的。 通过尝试删除本地主机,它仍然默认使用 127.0.0.1 所以同样的问题。 @DarioDeyaDiaz 你解决过这个问题吗?我遇到了同样的麻烦I asked the question here

以上是关于Ktor Netty 服务器发送空响应的主要内容,如果未能解决你的问题,请参考以下文章

关于Netty4怎么实现服务发送数据之后等待返回结果

使用 ktor 发送推送通知

ktor 服务器 - 何时移动到另一个协程上下文

使用 Ktor 发送发布请求时出现内部服务器错误

如何使用 Ktor 服务器向其他服务器发送 POST 请求?

如何在 Ktor websockets 上发送 ping