简易HTTP服务器

本示例展示如何设置一个HTTP服务器。

该示例展示如何使用QHttpServer类设置服务器。服务器使用listen()函数绑定到入站端口,并使用route()函数为几个不同的入站URL添加处理器。对于其中一个URL "/auth",使用基本HTTP认证

const auto sslCertificateChain =
        QSslCertificate::fromPath(QStringLiteral(":/assets/certificate.crt"));
if (sslCertificateChain.empty()) {
    qWarning() << QCoreApplication::translate("QHttpServerExample",
                                              "Couldn't retrieve SSL certificate from file.");
    return -1;
}
QFile privateKeyFile(QStringLiteral(":/assets/private.key"));
if (!privateKeyFile.open(QIODevice::ReadOnly)) {
    qWarning() << QCoreApplication::translate("QHttpServerExample",
                                              "Couldn't open file for reading: %1")
                  .arg(privateKeyFile.errorString());
    return -1;
}
httpServer.sslSetup(sslCertificateChain.front(), QSslKey(&privateKeyFile, QSsl::Rsa));
privateKeyFile.close();

const auto sslPort = httpServer.listen(QHostAddress::Any);
if (!sslPort) {
    qWarning() << QCoreApplication::translate("QHttpServerExample",
                                              "Server failed to listen on a port.");
    return -1;
}

上述示例中使用QSslConfiguration演示了如何为QHttpServer创建SSL配置以服务HTTPS流量。

httpServer.afterRequest([](QHttpServerResponse &&resp) {
    resp.setHeader("Server", "Qt HTTP Server");
    return std::move(resp);
});

上述示例展示了如何使用QHttpServerafterRequest()函数在route()函数处理后更改QHttpServerResponse对象。它演示了如何将HTTP头部添加到响应中。

文件

图片

© 2024 Qt公司有限。提供的文档贡献的版权属于他们的各自的所有者。本提供的文档在自由软件基金会发布的GNU自由文档许可版本1.3的条款下许可。Qt及其相关标志是芬兰Qt公司及其在全球的子公司和附属公司的商标。所有其他商标均为其各自所有者的财产。