cpp http 客户端与服务端 POST请求
cpp http 客户端与服务端
下载任意版本的cpp-httplib库,解压后,将httplib.h放入项目目录中。
https://github.com/yhirose/cpp-httplib
最简版
在项目目录中我新建了thirdparty文件夹放第三方库,这不重要,只是include时加了路径即可。
客户端代码:
#include "../thirdparty/httplib.h"int main(int argc, char** argv)
{// 创建一个HTTP客户端实例,连接到本地的25565端口httplib::Client client("localhost:25565");// 向服务器的"/hello"路径发送POST请求,并获取响应结果httplib::Result result = client.Post("/hello");// 检查请求是否成功以及响应状态码是否为200(表示请求成功)if (!result || result->status != 200){// 如果请求失败或状态码不是200,输出错误信息并返回-1表示程序异常退出std::cout << "Hello Failed!" << std::endl;return -1;}// 如果请求成功,输出服务器返回的响应体内容std::cout << result->body << std::endl;// 调用系统命令暂停程序,防止控制台窗口立即关闭(Windows系统有效)system("pause");// 程序正常退出,返回0return 0;
}
服务端:
#include "../thirdparty/httplib.h"
#include <iostream>// 实现POST请求处理函数
void handleHelloRequest(const httplib::Request& req, httplib::Response& res)
{// 收到客户端请求时,在服务器控制台输出提示信息std::cout << "Hello From Client!" << std::endl;// 设置响应内容:返回"Hello From Server!"字符串,类型为纯文本res.set_content("Hello From Server!", "text/plain");
}
int main(int argc, char** argv)
{// 创建HTTP服务器实例httplib::Server server;// 注册POST请求处理器,将"/hello"路径与处理函数关联// 不使用lambda,而是直接传入函数名作为回调server.Post("/hello", handleHelloRequest);// 启动服务器,监听本地25565端口// 服务器启动后会持续运行,处理客户端请求server.listen("localhost", 25565);return 0;
}