我找到了这个名为 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/