Qt中使用httpServer框架

Qt中使用cpp-httplib

cpp-httplib这个库只需要导入头文件就可以使用,不需要生成库非常方便。
github也有非常详细的介绍。

#include <httplib.h>
#include <QFile>
#include <QString>
#include <QDebug>

int main(void)
{
    using namespace httplib;
    using namespace detail;

    Server svr;
    svr.set_base_dir("./document");
    bool ret = svr.set_mount_point("/", "./document");
    svr.set_mount_point("/zh", "./document/zh");
    svr.set_mount_point("/en", "./document/en");
    //svr.set_mount_point(decode_url("/zh/主页.html",false).c_str(), "./document/zh/主页.html");
    if (!ret) {
        // The specified base directory doesn't exist...
        std::cout << "The specified base directory doesn't exist..." << std::endl;
    }
    svr.Get("/hi", [](const Request& req, Response& res) {
        res.set_content("Hello World!", "text/plain");
    });

    svr.Get(R"(/numbers/(\d+))", [&](const Request& req, Response& res) {
        auto numbers = req.matches[1];
        res.set_content(numbers, "text/plain");
    });

    svr.Get("/stop", [&](const Request& req, Response& res) {
        svr.stop();
    });

    svr.Get(R"(/(\S+))", [&](const Request& req, Response& res) {
        QString path = QString::fromStdString(req.path);
        QStringList pathList = path.split("/");
        qDebug() << pathList;
        qDebug()<<decode_url(req.path,false).c_str()<<req.path.c_str();
        QByteArray byteArray = "";
        std::string rootPath = ("./document");
        rootPath.append(req.path);
        std::string t = decode_url(req.path.c_str(),false);
        svr.set_mount_point(t.c_str(), "./document/zh/主页.html");

    });
    svr.listen("127.0.0.1", 3001);
}

根据需求本来打算使用该框架可是后面有个问题出现:中文的url解析乱码,我一直没解决就放弃了。
哪位大佬会解决能否在评论区share一下,万分感谢>_<

Qt中使用QtWebApp

QtWepApp 是 C++ 中的 HTTP 服务器库,受 Java servlet 的启发。适用于 Linux、Windows、Mac OS 和Qt 框架支持的许多其他操作系统。 官网也有非常详细的介绍。

QtWebApp 包含以下组件,这些组件可以相互独立使用:

  • HTTP服务器
  • 文件记录器
  • 模板引擎
    在这里插入图片描述

自己写了一个示例,html文档是现成的,并没有使用模板引擎: github地址

参考资料

  • QtWebApp 官网:http://stefanfrings.de/qtwebapp/index.html
  • cpp-httplib github地址:https://github.com/yhirose/cpp-httplib
  • cpprestsdk github地址:https://github.com/Microsoft/cpprestsdk
  • httpp github地址:https://github.com/daedric/httpp
  • libhttpserver github地址:https://github.com/etr/libhttpserver
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HelloHypatia

希望自己的总结对大家有所帮助!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值