我最近在学习基于ONVIF的视频传输,目前进展到GetCapabilities阶段,但是我也不知道是什么原因,soap_call___tds__GetCapabilities的返回一直是soap->error,希望有ONVIF开发经验的大神们,帮帮忙!具体问题在二楼!
soap_1 = soap_new();
if(soap_1 == NULL)
{
printf("soap_1 error!\n");
return -1;
}
soap_set_namespaces(soap_1, namespaces);
capa_req->sizeCategory = 1;
enum ttCapabilityCategory temp_category = tt__CapabilityCategory__Media;
capa_req->Category = (enum tt__CapabilityCategory*)malloc(sizeof(enum tt__CapabilityCategory));
capa_req->Category = &temp_category;
capa_resp->Capabilities = (struct tt__Capabilities *)malloc(sizeof(struct tt__Capabilities)) ;
result = soap_call___tds__GetCapabilities(soap_1,resp.wsdd__ProbeMatches->ProbeMatch->XAddrs, NULL, capa_req, capa_resp);
结构体的填充的代码如楼上所示,希望有这方面开发经验的大神帮帮忙指出问题!
关于数据正确(抓包可收到数据),但soap返回错误,为4 及 SOAP_TYPE 的问题:
GetCapabilities的过程错误时。
多次调试后得出结论,是tt__CapabilityCategory 的设置问题,有的设备不具备全部功能,而请求全部或请求没有的功能就可能造成这种问题,推荐写5(tt__CapabilityCategory__Media) 这是大多数设置有的能力,而且最常用。
https://blog.csdn.net/weixin_42432281/article/details/85158378