Qt 编译QtHttpServer(0.1.0)
1、下载QtHttpServer,并解压到E:/qhttpserver-master
https://github.com/qt-labs/qthttpserver
2、下载第三方依赖http-parser,并解压到E:/qhttpserver-master/http-parser
https://github.com/nodejs/http-parser
3、用Qt 5.9.8打开E:/qhttpserver-master/qhttpserver.pro,编译Debug和Release两个版本,
在E:/qhttpserver-master/lib目录下生成三个文件:
libqhttpserver.a、qhttpserverd.dll、qhttpserver.dll
头文件包含:
qhttpconnection.h、qhttprequest.h、qhttpresponse.h、qhttpserver.h、
qhttpserverapi.h、qhttpserverfwd.h
4、例子:
创建qt工程,pro文件中添加:Qt += network
CONFIG(debug,debug|release):LIBS += $$PWD/lib/qhttpserverd.dll
else:LIBS += $$PWD/lib/qhttpserver.dll
INCLUDEPATH += httpserver
5、创建QMyHttpServer类,基于QObject,定义变量
private:
QHttpServer* m_pServer;
QHttpRequest* m_pRequest;
QHttpResponse* m_pResponse;
QString m_strRequest;
6、初始化服务
m_pServer = new QHttpServer(this);
connect(m_pServer,SIGNAL(newRequest(QHttpRequest*,QHttpResponse*)),this,SLOT(handleRequest(QHttpRequest*,QHttpResponse*)));
m_pServer->listen(QHostAddress::Any,8019);
7、注册信号:
void QMyHttpServer::handleRequest(QHttpRequest* request,QHttpResponse* response)
{
m_pRequest = request;
m_pResponse= response;
connect(m_pRequest,SIGNAL(data(QByteArray)),this,SLOT(appendBody(QByteArray)));//有数据来时存起来
connect(m_pRequest,SIGNAL(end()),this,SLOT(dealRequest()));//数据传输结束时处理
}
void QMyHttpServer::appendBody(QByteArray body)
{
m_strRequest += body;
}
void QMyHttpServer::dealRequest()
//处理