Onvif获取rstp地址GetCapabilities能力时,出现error 4或者52的的解决方法

在获取Onvi能力soap_call___tds__GetCapabilities的接口中有时候会出现error:4或者52的情况,是因为在soapC.c中用不到extension,所以我们必须得把它注释掉。比如:

if (soap_flag_Extension && soap->error == SOAP_TAG_MISMATCH)
            {    if (soap_in_PointerTott__Network*******,

即以soap_flag_Extension && soap->error条件下和   soap_in_PointerTott__Network条件下的都要注释掉。soap_in_PointerTott__Network*******有很多个,以下是我注释的代码

1、

/*if (soap_flag_Extension && soap->error == SOAP_TAG_MISMATCH)

            {    if (soap_in_PointerTott__CapabilitiesExtension(soap, "tt:Extension", &a->Extension, "tt:CapabilitiesExtension"))
                {    soap_flag_Extension--;
                    continue;
                }
            }*/

 

2、

/*if (soap_flag_Extension && soap->error == SOAP_TAG_MISMATCH)
            {    if (soap_in_PointerTott__NetworkCapabilitiesExtension2(soap, "tt:Extension", &a->Extension, "tt:NetworkCapabilitiesExtension2"))
                {    soap_flag_Extension--;
                    continue;
                }
            }
            if (soap->error == SOAP_TAG_MISMATCH && !soap_peek_element(soap))
            {    if (a->__any == NULL)
                {    if (soap_blist___any == NULL)
                        soap_blist___any = soap_alloc_block(soap);
                    a->__any = (char *)soap_push_block_max(soap, soap_blist___any, sizeof(char));
                    if (a->__any == NULL)
                        return NULL;
                    soap_default_byte(soap, a->__any);
                }
                if (soap_in_byte(soap, "-any", a->__any, "xsd:byte"))
                {    a->__size++;
                    a->__any = NULL;
                    continue;
                }
            }*/

3. 

/*    if (soap_flag_Extension && soap->error == SOAP_TAG_MISMATCH)
            {    if (soap_in_PointerTott__NetworkZeroConfigurationExtension2(soap, "tt:Extension", &a->Extension, "tt:NetworkZeroConfigurationExtension2"))
                {    soap_flag_Extension--;
                    continue;
                }
            }
            if (soap->error == SOAP_TAG_MISMATCH && !soap_peek_element(soap))
            {    if (a->__any == NULL)
                {    if (soap_blist___any == NULL)
                        soap_blist___any = soap_alloc_block(soap);
                    a->__any = (char *)soap_push_block_max(soap, soap_blist___any, sizeof(char));
                    if (a->__any == NULL)
                        return NULL;
                    soap_default_byte(soap, a->__any);
                }
                if (soap_in_byte(soap, "-any", a->__any, "xsd:byte"))
                {    a->__size++;
                    a->__any = NULL;
                    continue;
                }
            }*/

正常注释掉以上接口,GetCapabilities的的错误就能解决掉。

--------------------------------------------------------------------------------------------------------------------------------------------------------

但是有些摄像头的品牌比较少见,依然还会出现:soap error: 52, (null), (null),这时候你要注释以下接口:

1.

/*	if (soap_flag_Extension && soap->error == SOAP_TAG_MISMATCH)
			{	if (soap_in_PointerTott__RealTimeStreamingCapabilitiesExtension(soap, "tt:Extension", &a->Extension, "tt:RealTimeStreamingCapabilitiesExtension"))
				{	soap_flag_Extension--;
					continue;
				}
			}*/

2.

/*if (soap_flag_Extension && soap->error == SOAP_TAG_MISMATCH)
			{	if (soap_in_PointerTott__MediaCapabilitiesExtension(soap, "tt:Extension", &a->Extension, "tt:MediaCapabilitiesExtension"))
				{	soap_flag_Extension--;
					continue;
				}
			}	
    if (soap->error == SOAP_TAG_MISMATCH && !soap_peek_element(soap))
			{	if (a->__any == NULL)
				{	if (soap_blist___any == NULL)
						soap_blist___any = soap_alloc_block(soap);
					a->__any = (char *)soap_push_block_max(soap, soap_blist___any, sizeof(char));
					if (a->__any == NULL)
						return NULL;
					soap_default_byte(soap, a->__any);
				}
				if (soap_in_byte(soap, "-any", a->__any, "xsd:byte"))
				{	a->__size++;
					a->__any = NULL;
					continue;
				}
			}*/

完美解决~

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值