onvif 获取服务端的uri
请教:已经获取设备的能力和配置信息,但是获取uri的时候,函数返回 2
用wireshark抓服务端的包,显示 env:faultcode env:Sender env:faultstring the xml format error
抓客户端的包时,没发现格式上有问题呀。摄像头是海康的,onvif版本2.8.17
代码如下:
void UserGetUri(struct soap *soap, char *token_name, _tds__GetCapabilitiesResponse *capa_resp)
{
int result=0 ;
printf("\n\n---------------Getting Uri----------------\n");
_trt__GetStreamUri *trt__GetStreamUri = soap_new__trt__GetStreamUri(soap,-1);
_trt__GetStreamUriResponse *trt__GetStreamUriResponse = soap_new__trt__GetStreamUriResponse(soap,-1);
trt__GetStreamUri->StreamSetup = soap_new_tt__StreamSetup(soap,-1);
trt__GetStreamUri->StreamSetup->Stream = (tt__StreamType)0;//tt__StreamType__RTP_Unicast;
trt__GetStreamUri->StreamSetup->Transport = soap_new_tt__Transport(soap,-1);
trt__GetStreamUri->StreamSetup->Transport->Protocol =tt__TransportProtocol__RTSP;//(tt__TransportProtocol)0;// tt__TransportProtocol__UDP; //RTSP协议
trt__GetStreamUri->StreamSetup->Transport->Tunnel = 0;
trt__GetStreamUri->StreamSetup->__size = 1;
trt__GetStreamUri->StreamSetup->__any = NULL;
trt__GetStreamUri->StreamSetup->__anyAttribute =NULL;
trt__GetStreamUri->ProfileToken = token_name;
printf("channel token:%s\n",trt__GetStreamUri->ProfileToken);
printf("address:%s\n",capa_resp->Capabilities->Media->XAddr);
soap_wsse_add_UsernameTokenDigest(soap,"user", "admin", "qwer1234");
result = soap_call___trt__GetStreamUri(soap,capa_resp->Capabilities->Media->XAddr, NULL, trt__GetStreamUri, trt__GetStreamUriResponse);
if (soap->error)
{
printf("soap error: %d, %s, %s\n", soap->error, *soap_faultcode(soap), *soap_faultstring(soap));
result = soap->error;
return;
}
else
{
printf("!!!!NOTE: RTSP Addr Get Done is :%s \n",trt__GetStreamUriResponse->MediaUri->Uri);
}
}