关于qt:QNetworkAccessManager和HTTP长连接

QNetworkAccessManager and HTTP persistent connection

HTTP 1.1 默认支持持久连接,所以我想使用第一个 HTTP 请求时设置的相同连接发送我的第二个 http 请求。这如何通过 Qt 实现?

如果我只是在第一个请求完成后发出第二个请求,如下所示

1
manager->get(QNetworkRequest(QUrl("http://qt-project.org")));

似乎将启动到服务器的新 TCP 连接(我已经用网络嗅探器检查过)
实验还说:如果回复是 deleteLater() 或 abort() 内
finished() 信号,连接将被关闭。


您可以执行以下操作以进一步调查:

  • 转储传出请求的 HTTP 标头(已知和原始)。您应该看到一个 Connection: Keep-Alive 标头集。
  • 转储响应标头。网络服务器不应设置 Connection: Close

有时网络服务器不遵守 keep-alive 标头,并且无论如何都会发送 close。在这种情况下,客户端正确地关闭了连接。