tufao是一个由QT编写的HTTP服务器。 tufao代替apache来实现http的通信。
MyServerHandlePost.cpp
#include "MyServerHandlePost.h" #include <QFile> #include <QJsonObject> #include <QJsonValue> #include <QJsonDocument> #include <QJsonArray> MyServerHandlePost::MyServerHandlePost(QObject *parent) : QObject(parent) { server = new HttpServer; if(!server->listen(QHostAddress::Any, 8081)) { qDebug()<<"bind error"; } connect(server, &HttpServer::requestReady, this, &MyServerHandlePost::slotRequestReady); } void MyServerHandlePost::handlePostData(HttpServerRequest &request, HttpServerResponse &response) { // QFile file("/home/xueguoliang/a.txt_upload"); // file.open(QFile::WriteOnly); /* data is {username: "xxx", password: "yyy"} */ QByteArray data = request.readBody(); QJsonDocument doc = QJsonDocument::fromJson(data); QJsonObject root = doc.object(); QString username = root.value("username").toString(); QString password = root.value("password").toString(); if(username == "aaa" && password== "bbb") { // {result: "ok"} root.insert("result", QString("ok")); } else { // {result: "ok"} root.insert("result", QString("err")); root.insert("reason", QString("username or password error")); } { QJsonDocument doc(root); QByteArray buf = doc.toJson(); response.writeHead(HttpResponseStatus::OK); response.end(buf); } // file.write(data); // file.close(); } void MyServerHandlePost::slotRequestReady(HttpServerRequest &request, HttpServerResponse & response) { if(request.method() == "POST") { // connect(&request, &HttpServerRequest::ready, ) // end signal: all data is ready // connect(&request, SIGNAL(end()), this, SLOT(slotDataEnd())); connect(&request, &HttpServerRequest::end, [&](){ handlePostData(request, response); }); } else { response.writeHead(HttpResponseStatus::OK); response.end("i need post method\n"); } }