1.9.0
07.09.2023
Some methods return now const reference to improve the performance a little bit.
Chunked transfer is not used anymore if the Content-Length is known.
1.8.8
24.01.2023
Better HTTP status code (400 bad request) if the first line of request is malformed.
Connection closes more quickly after an Error.
1.8.7
23.01.2023
Fix possible endless loop with high CPU load after receiveing a broken HTTP request.
1.8.6
30.09.2022
Fix compile error under Windows: sslCaCertFileName was not declared
1.8.5
19.03.2022
Add support for SSL peer verification and CA certificate.
1.8.4
29.10.2021
Add Content-Length header to static file controller.
1.8.3
21.03.2021
The minLevel for logging can now be configured as string.
Info messages are now positioned between DEBUG and WARNING.
I also added an example for HTTP Basic authorization.
QtWepApp ist eine HTTP Server Bibliothek in C++, inspiriert von Java Servlets. Für Linux, Windows, Mac OS und viele andere Betriebsysteme, die das Qt Framework unterstützt.
QtWebApp enthält folgende Komponenten:
// Das Hauptprogramm startet den HTTP Server int main(int argc,char *argv[]) { QCoreApplication app(argc,argv); // Einstellungen können auch aus einer Datei geladen werden QSettings* settings=new QSettings(&app); settings->setValue("port","8080"); settings->setValue("maxThreads","100"); // Starte den Webserver new HttpListener(settings,new MyRequestHandler(&app),&app); return app.exec(); } // Der Request Handler empfängt und beantwortet HTTP Requests void MyRequestHandler::service(HttpRequest& request,HttpResponse& response) { // Frage einen Request-Parameter ab QByteArray username=request.getParameter("username"); // Setze einen Antwort-Header response.setHeader("Content-Type","text/html"); // Erzeuge das HTML Dokument response.write("<html><body>"); response.write("Hallo "); response.write(username); response.write("</body></html>"); }
Durch den geringen Speicherbedarf von ca. 2MB eignet sich der Webserver für embedded Systeme. Zum Beispiel für den Bier-brau Automat von Sebastian Düll. Aber er ist auch für große Web-Dienste geeignet.
Der Logger verbessert Speicherplatz und Leistung, indem er Debug Meldungen im Speicher zurück hält bis ein Fehler auftritt. So lange alles gut läuft, werden keine Debug Meldungen ausgegeben. Änderungen an der Konfiguration des Loggers werden automatisch ohne Neustart aktiv.
Quelltext, Anleitung, API Dokumentation .
Die Bibliothek läuft mit Qt Version 4.7 bis 6.x. Im Fall von Qt6 musst du die Qt5Compat Bibliothek installieren. Darin befindet sich der Support für zahlreiche 8 Bit Zeichensätze, die Qt6 standardmäßig nicht mehr unterstützt. Du darfst die Software unter Einhaltung der LGPL Lizenz verwenden.
Ein paar Jahre später habe ich aus diesem Prototypen eine Bibliothek gemacht und in wenigen privaten Projekten verwendet. Kollegen ermunterten mich, den Code zu veröffentlichen. Seit dem habe ich das Projekt nicht mehr verwendet, aber trotzdem ein paar Verbesserungen vorgenommen, um Leute glücklich zu machen. Interessanterweise arbeiten die Qt Macher seit vielen Jahren an einem standard HTTP Server, doch er ist 2023 immer noch nicht in der Qt Bibliothek enthalten. Das könnte der Grund sein, warum viele Leute stattdessen meine Bibliothek verwenden.