tt__Profile *t = profiles.Profiles.at(0);
OnvifClientPTZ PTZ(onvifDevice);
_tptz__GetConfigurationOptions tptz__GetConfigurationOptions;
_tptz__GetConfigurationOptionsResponse tptz__GetConfigurationOptionsResponse;
tt__PTZConfigurationOptions *options;
int response = PTZ.GetConfigurationOptions(tptz__GetConfigurationOptionsResponse, t->token);
问题是PTZ#GetConfigurationOptions返回值1(#response)。
对象#onvifDevice似乎不错(onvifDevice.hasPTZ返回true)。
我试过调试,onvifDevice.GetPTZUrl(strUrl)返回true并将strUrl设置为192.168.1.88:2000/device/services,这是PtzProxy对象的soap_endpoint(ptzProxy.soap_endpoint = strUrl.c_str();),似乎是精细。同样,soap_action也可以是“ www.onvif.org/ver20/ptz/wsdl/GetConfigurationOptions”。
我正在使用https://github.com/xsmart/onvifcpplib。
在PTZ代理中返回以下内容:
tptz__GetConfigurationOptionsResponse->soap_get(soap, "tptz:GetConfigurationOptionsResponse", "");
if (soap->error)
return soap_recv_fault(soap, 0);
任何帮助,将不胜感激。
最佳答案
我找到了解决方案。问题出在这一行:
int response = PTZ.GetConfigurationOptions(tptz__GetConfigurationOptionsResponse, t->token);
OnvifPTZClient#GetConfigurationOptions请求PTZConfiguration令牌,而不是配置文件令牌。因此正确的行将是:
response = PTZ.GetConfigurationOptions(tptz__GetConfigurationOptionsResponse, tr->PTZConfiguration->token);