使用 cpp-httplib 进行 POST 请求

meg*_*uli 6 c++ http

我发现了这个名为cpp-httplib的仅标头库,它似乎可以很好地满足我的目的。我需要通过 HTTP 请求控制摄像头。例如,我可以使用以下方法读取相机的当前位置:

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

对应于以下 Curl 命令;

卷曲-X GET“ http://192.170.0.201:8080/ptz.stats/present_pos

现在,我想使用 POST 请求移动相机。使用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);
Run Code Online (Sandbox Code Playgroud)

这没有任何作用。我可以看到相机,并且curl 命令会移动它。httplib那么,我是否以错误的方式将 POST 请求转换为格式?您如何称呼该curl 请求httplib

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

小智 4

相关问题: HTTP POST 请求中的参数是如何发送的?

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

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