从使用ONVIF作为通信协议的相机获取数字输入时遇到问题。我知道,相机有2个数字输入,无需登录即可匿名访问。
我正在使用此WSDL中的操作GetDigitalInputs
:https://www.onvif.org/ver10/deviceio.wsdl。其他一些行动也有效。例如,我可以成功使用GetRelayOutputs
。
以下是我要将相机发送到deviceIO服务网址(http://ipaddress/onvif/deviceio_service
)的请求。设备IO服务URL是从GetCapabilities
操作的结果中获取的:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Body>
<GetDigitalInputs xmlns="http://www.onvif.org/ver10/deviceIO/wsdl" />
</s:Body>
</s:Envelope>
这是回复
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:ter="http://www.onvif.org/ver10/error">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<SOAP-ENV:Code>
<SOAP-ENV:Value>SOAP-ENV:Sender</SOAP-ENV:Value>
<SOAP-ENV:Subcode>
<SOAP-ENV:Value>ter:Namespace</SOAP-ENV:Value>
</SOAP-ENV:Subcode>
</SOAP-ENV:Code>
<SOAP-ENV:Reason>
<SOAP-ENV:Text xml:lang="en">Namespace Error</SOAP-ENV:Text>
</SOAP-ENV:Reason>
<SOAP-ENV:Node>http://www.w3.org/2003/05/soap-envelope/node/ultimateReceiver</SOAP-ENV:Node>
<SOAP-ENV:Role>http://www.w3.org/2003/05/soap-envelope/node/ultimateReceiver</SOAP-ENV:Role>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
我尝试将GetDigitalInputs
的命名空间更改为http://www.onvif.org/ver10/deviceio/wsdl
和http://www.onvif.org/ver10/device/wsdl
。两者都不起作用。
我尝试使用Onvif Device Test Tool,这与我的问题相同。
我对行动GetSerialPorts
遇到了同样的问题。两种不同的博世相机。
答案 0 :(得分:0)
以下XML怎么样?
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Body>
<tmd:GetDigitalInputs xmlns:tmd="http://www.onvif.org/ver10/deviceIO/wsdl" />
</s:Body>
</s:Envelope>