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()

    //处理

相关