シンプルなHTTPサーバー
HTTPサーバーのセットアップ方法の簡単な例です。
この例では、QHttpServer クラスを使用してサーバーをセットアップする方法を示します。サーバはbind()関数でポートをリッスンしているQTcpServer にバインドされ、route()
関数を使用して、いくつかの異なる受信URLのそれぞれにハンドラを追加します。URLの1つである"/auth "では、HTTPベーシック認証が使用される。
QSslConfiguration conf = QSslConfiguration::defaultConfiguration(); 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; } conf.setLocalCertificate(sslCertificateChain.front()); conf.setPrivateKey(QSslKey(&privateKeyFile, QSsl::Rsa)); privateKeyFile.close(); auto sslserver = std::make_unique<QSslServer>(); sslserver->setSslConfiguration(conf); if (!sslserver->listen() || !httpServer.bind(sslserver.get())) { qWarning() << QCoreApplication::translate("QHttpServerExample", "Server failed to listen on a port."); return -1; } quint16 sslPort = sslserver->serverPort(); sslserver.release();
上記の例では、QSslConfiguration
、HTTPSトラフィックを提供するために、QHttpServer 、SSL設定を作成する方法を示しています。
httpServer.addAfterRequestHandler(&httpServer, [](const QHttpServerRequest &, QHttpServerResponse &resp) { auto h = resp.headers(); h.append(QHttpHeaders::WellKnownHeader::Server, "Qt HTTP Server"); resp.setHeaders(std::move(h)); });
上記の例では、QHttpServer のaddAfterRequestHandler()
関数を使用して、route()
関数で処理された後にQHttpServerResponse オブジェクトを変更する方法を示しています。レスポンスにHTTPヘッダーを追加する方法を示しています。
ファイル
画像
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。