c++ - 使用 cpp-httplib 的 POST 请求

标签 c++ http

我找到了这个名为 cpp-httplib 的仅 header 库,这似乎对我的目的很有效。我需要通过 HTTP 请求来控制摄像头。例如,我可以使用以下方法读取相机的当前位置:

httplib::Client cli("192.170.0.201", 8080);
auto res = cli.Get("/ptz.stats/present_pos");

对应以下Curl命令;

curl -X GET "http://192.170.0.201:8080/ptz.stats/present_pos"

现在,我想使用 POST 请求移动相机。使用 curl,我可以使用以下命令将相机向左移动:

curl -X POST "http://192.170.0.201:8080/ptz.cmd/?pan_left=50"

我想使用 httplib 发出完全相同的 POST 请求

httplib::Client cli("192.170.0.201", 8080);
httplib::Params params{
  { "pan_left", "50" }
};
auto p = cli.Post("/ptz.cmd", params);

这什么都不做。我可以看到相机并且 curl 命令移动它。那么,我是否以错误的方式将 POST 请求转换为 httplib 格式?您将如何调用 httplib 中的 curl 请求?

PS:httplib 可能不是一个流行的库,但它有简洁的文档,我认为任何使用 Web 请求和 C++ 的人都可以提供帮助。

最佳答案

相关问题: How are parameters sent in an HTTP POST request?

POST 参数不在 URI 中发送。来自cpp-httplib github ,您可以使用以下方式发送 url 编码的参数:

cli.Post("/ptz.cmd", "pan_left=50", "application/x-www-form-urlencoded");

关于c++ - 使用 cpp-httplib 的 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274981/

相关文章:

c# - 日志记录如何影响 Quickfix 性能?

c++ - 在类模板中使用条件运算符初始化静态 constexpr char 数组成员

c++ - 错误 : 'Qt::ConnectionType' is not a class or namespace

http - 使用 Golang 扫描网页

java - 在 Java Web 服务中支持基于 IP 的白名单

http - 如何找到网络服务器支持的所有 HTTP 方法的列表?

http - 什么被认为是 HTTP header 中的空格

Inno Setup 脚本中的 HTTP POST 请求

c++ - 简单的拼写检查算法

c++ - 具有可变长度写入的多生产者多消费者无锁非阻塞环形缓冲区