我发现了这个名为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)