Skip to content

Commit 1fd8656

Browse files
http服务端调试通过
1 parent 648d1d6 commit 1fd8656

33 files changed

+3923
-28
lines changed

qt_http/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
## http
2+
3+
这个项目主要实现了http 客户端和服务端,项目依赖
4+
5+
https://github.com/yhirose/cpp-httplib

qt_http/http_client.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#include "http_client.h"
2+
3+
HttpClient::HttpClient()
4+
{
5+
6+
}

qt_http/http_client.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#ifndef HTTP_CLIENT_H
2+
#define HTTP_CLIENT_H
3+
4+
5+
class HttpClient
6+
{
7+
public:
8+
HttpClient();
9+
10+
11+
private:
12+
13+
};
14+
15+
#endif // HTTP_CLIENT_H

qt_http/http_server.cpp

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#include "http_server.h"
2+
#include <QDebug>
3+
4+
// 服务端地址 https://github.com/fffaraz/QtWebApp
5+
//https://github.com/fffaraz/QtWebApp
6+
7+
8+
HttpServer::HttpServer()
9+
{
10+
// HTTP
11+
// m_httpServer.Get("/hi", [](const httplib::Request &, httplib::Response &res) {
12+
// res.set_content("Hello World!", "text/plain");
13+
// });
14+
15+
QSettings* settings = new QSettings("config.ini", QSettings::IniFormat, this);
16+
// settings->setValue("host","192.168.0.100");
17+
settings->setValue("port", 8080);
18+
settings->setValue("minThreads", 4);
19+
settings->setValue("maxThreads", 100);
20+
settings->setValue("cleanupInterval", 60000);
21+
settings->setValue("readTimeout", 60000);
22+
settings->setValue("maxRequestSize", 16000);
23+
settings->setValue("maxMultiPartSize", 10000000);
24+
25+
26+
qDebug() << settings->value("port");
27+
28+
quint16 port = settings->value("port").toUInt();
29+
30+
// Configure and start the TCP listener
31+
new stefanfrings::HttpListener(settings, new RequestHandler(this), this);
32+
33+
34+
}
35+
36+
37+
38+
39+
40+
41+
42+
43+
44+
45+
46+
RequestHandler::RequestHandler(QObject* parent)
47+
:HttpRequestHandler(parent)
48+
{
49+
qDebug("RequestHandler: created");
50+
}
51+
52+
53+
RequestHandler::~RequestHandler()
54+
{
55+
qDebug("RequestHandler: deleted");
56+
}
57+
58+
void RequestHandler::service(HttpRequest& request, HttpResponse& response)
59+
{
60+
QByteArray path=request.getPath();
61+
qDebug("Conroller: path=%s",path.data());
62+
63+
// Set a response header
64+
response.setHeader("Content-Type", "text/html; charset=ISO-8859-1");
65+
66+
// Return a simple HTML document
67+
response.write("<html><body>Hello World!</body></html>",true);
68+
69+
qDebug("RequestHandler: finished request");
70+
}
71+

qt_http/http_server.h

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#ifndef HTTP_SERVER_H
2+
#define HTTP_SERVER_H
3+
4+
//#include "http-cpp/httplib.h"
5+
#include "httplistener.h"
6+
7+
8+
#include "httprequesthandler.h"
9+
10+
using namespace stefanfrings;
11+
12+
/**
13+
The request handler receives incoming HTTP requests and generates responses.
14+
*/
15+
16+
class RequestHandler : public HttpRequestHandler {
17+
Q_OBJECT
18+
Q_DISABLE_COPY(RequestHandler)
19+
public:
20+
21+
/**
22+
Constructor.
23+
@param parent Parent object
24+
*/
25+
RequestHandler(QObject* parent=0);
26+
27+
/**
28+
Destructor
29+
*/
30+
~RequestHandler();
31+
32+
/**
33+
Process an incoming HTTP request.
34+
@param request The received HTTP request
35+
@param response Must be used to return the response
36+
*/
37+
void service(HttpRequest& request, HttpResponse& response);
38+
39+
};
40+
41+
42+
43+
44+
class HttpServer : public QObject
45+
{
46+
Q_OBJECT
47+
public:
48+
HttpServer();
49+
50+
51+
52+
53+
private:
54+
// httplib::Server m_httpServer;
55+
stefanfrings::HttpListener *m_httpServer{nullptr};
56+
};
57+
58+
#endif // HTTP_SERVER_H

0 commit comments

Comments
 (0)