weixin_46027762 2024-01-08 16:56 采纳率: 65.7%
浏览 30
已结题

c++ http服务器

请问一下,我使用httplib.h创建http服务器时,在vs2022和vs2017上使用都正常,但是在vs2015上使用则报错,get请求不会报错,post请求报错,httplib.h是不能再vs2015上使用post请求吗:
严重性 代码 说明 项目 文件 行
错误(活动) 有多个 重载函数 "httplib::Server::Post" 实例与参数列表匹配: Project8 c:\Users\xhn\Documents\Visual Studio 2015\Projects\Project8\Project8\源.cpp 33

严重性 代码 说明 项目 文件 行
错误 C2668 “httplib::Server::Post”: 对重载函数的调用不明确 Project8 c:\Users\xhn\documents\visual studio 2015\Projects\Project8\Project8\源.cpp 64
严重性 代码 说明 项目 文件 行
错误(活动) 有多个 重载函数 "httplib::Server::Post" 实例与参数列表匹配: Project8 c:\Users\xhn\Documents\Visual Studio 2015\Projects\Project8\Project8\源.cpp 66
严重性 代码 说明 项目 文件 行
错误 C2668 “httplib::Server::Post”: 对重载函数的调用不明确 Project8 c:\Users\xhn\documents\visual studio 2015\Projects\Project8\Project8\源.cpp 105

#include "httplib.h"

#include <iostream>

using namespace std;
class ServerSet {
public:
    std::string host_nickname;
    std::string client_ip_id;
    std::string client_port;
    std::string server_ip;
    std::string server_port;
};
int main(void)
{
    ServerSet server;

    using namespace httplib;

    Server svr;

    svr.Get(R"(/HostInfo/setOsColl/(\d+))", [&](const Request& req, Response& res) {
        auto numbers = req.matches[1];
        std::cout << numbers << std::endl;
        if (numbers != "0" && numbers != "1") {
            res.set_content("false", "text/plain");
        }
        else {
            res.set_content("true", "text/plain");
        }
        });

    svr.Post("/HostInfo/setAgentIp", [&](const Request& req, Response& res) {
        std::cout << req.body << std::endl;
        string body = req.body;
        auto client_ip_id = req.get_param_value("client_ip_id");
        auto client_port = req.get_param_value("client_port");
        std::regex regex("\"([^\"]+)\":\\s*\"([^\"]*)\"");
        std::smatch match;

        std::sregex_iterator iter(body.begin(), body.end(), regex);
        std::sregex_iterator end;

        while (iter != end)
        {
            std::string field_name = iter->str(1);
            std::string field_value = iter->str(2);

            if (field_name == "client_ip_id")
            {
                server.client_ip_id = field_value;
            }
            else if (field_name == "client_port")
            {
                server.client_port = field_value;
            }

            ++iter;
        }
        std::cout << "client_ip_id: " << server.client_ip_id << std::endl;
        std::cout << "client_port: " << server.client_port << std::endl;

        res.set_content("true", "text/plain");
        });

    svr.Post("/HostInfo/setServerIp", [&](const Request& req, Response& res) {
        std::cout << req.body << std::endl;
        string body = req.body;
        std::regex regex("\"([^\"]+)\":\\s*\"([^\"]*)\"");
        std::smatch match;

        std::string host_nickname;
        std::string server_ip;
        std::string server_port;

        std::sregex_iterator iter(body.begin(), body.end(), regex);
        std::sregex_iterator end;

        while (iter != end)
        {
            std::string field_name = iter->str(1);
            std::string field_value = iter->str(2);

            if (field_name == "host_nickname")
            {
                server.host_nickname = field_value;
            }
            else if (field_name == "server_ip")
            {
                server.server_ip = field_value;
            }
            else if (field_name == "server_port")
            {
                server.server_port = field_value;
            }

            ++iter;
        }

        std::cout << "host_nickname: " << server.host_nickname << std::endl;
        std::cout << "server_ip: " << server.server_ip << std::endl;
        std::cout << "server_port: " << server.server_port << std::endl;

        res.set_content("true", "text/plain");
        });

    svr.listen("0.0.0.0", 8002);
}
  • 写回答

15条回答 默认 最新

  • 急速光粒 2024-01-09 10:49
    关注

    你下的什么版本的httplib,vs2015上httplib0.14.3便以上会有点问题,解决后可以正常post的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(14条)

报告相同问题?

问题事件

  • 系统已结题 1月17日
  • 已采纳回答 1月9日
  • 创建了问题 1月8日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀