Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events PullMessages()始终返回;“残疾人士”;_Events_Onvif - Fatal编程技术网

Events PullMessages()始终返回;“残疾人士”;

Events PullMessages()始终返回;“残疾人士”;,events,onvif,Events,Onvif,首先我创建一个PullPoint订阅,然后订阅,但是当我在响应中向uri发送PullMessages()命令时,我总是得到相同的响应。你能看出是什么问题吗 我的PullMessages()请求- <SOAP-ENV:Header> <wsse:Security SOAP-ENV:mustUnderstand="true"><wsse:UsernameToken> <wsu:Id="Id"><wsse:Username>admin<

首先我创建一个PullPoint订阅,然后订阅,但是当我在响应中向uri发送PullMessages()命令时,我总是得到相同的响应。你能看出是什么问题吗

我的PullMessages()请求-

<SOAP-ENV:Header>
<wsse:Security SOAP-ENV:mustUnderstand="true"><wsse:UsernameToken>
<wsu:Id="Id"><wsse:Username>admin</wsse:Username>
<wsse:Password=Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">cCMdBA6WisDrtJItFsSEbiQnifc=</wsse:Password>
<wsse:Nonce>HYwnVsldpikr+h8zuGsT9QTw8ec=</wsse:Nonce>
<wsu:Created>2015-10-21T12:59:09Z</wsu:Created></wsse:UsernameToken></wsse:Security>
<wsa5:Action SOAP-ENV:mustUnderstand="true">http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesRequest</wsa5:Action></SOAP-ENV:Header>
<SOAP-ENV:Body><tev:PullMessages><tev:Timeout>PT00H00M05S</tev:Timeout>
<tev:MessageLimit>1</tev:MessageLimit></tev:PullMessages>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

管理
cCMdBA6WisDrtJItFsSEbiQnifc=
HYwnVsldpikr+h8zuGsT9QTw8ec=
2015-10-21T12:59:09Z
http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesRequest
PT00H00M05S
1.
设备的响应-

<s:Header>
<wsa:Action>http://www.w3.org/2005/08/addressing/soap/fault</wsa:Action></s:Header>
<s:Body><s:Fault><s:Code><s:Value>env:Sender</s:Value>
<s:Subcode><s:Value>ter:InvalidArgVal</s:Value></s:Subcode></s:Code>
<s:Reason><s:Text xml:lang="en">Argument Value Invalid</s:Text></s:Reason>
<s:Node>http://www.w3.org/2003/05/soap-envelope/node/ultimateReceiver</s:Node>
<s:Role>http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver</s:Role>
<s:Detail><wsrf-r:ResourceUnknownFault><wsrf-bf:Timestamp>2015-10-21T12:58:50.937248Z</wsrf-bf:Timestamp></wsrf-r:ResourceUnknownFault></s:Detail>
</s:Fault></s:Body></s:Envelope>

http://www.w3.org/2005/08/addressing/soap/fault
环境:发送者
三:残疾人
参数值无效
http://www.w3.org/2003/05/soap-envelope/node/ultimateReceiver
http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver
2015-10-21T12:58:50.937248Z

备注-如果您需要更多信息,请毫不犹豫地询问

问题是我没有在标题中填写“to”属性

我发现最好的方法是从“Onvif设备管理器”查看数据包
在wireshark中查看我的代码中是否有不匹配的内容。

问题可能是因为您的订阅期限已过期

如何检查此项: 在wireshark中,请参见少数成功返回或超时的初始PullMessage请求。(您也可以通过在PullMessage响应对象中放置一个print来检查响应)。 跟踪为响应PullMessage而提供的终止时间参数。 稍后,当您发送请求时,您可能会将其发送到过期的subscription manager,所以摄像头会显示“InvalidArg”

如何解决这个问题: 记住,wsdl文档中的PullMessage描述并不是说每次收到PullMessage时camera都必须续订。 大多数Axis相机从不更新。因为他们严格遵守onvif标准。
因此,您可以使用订阅通知续订方法。您可以保留一个小于PullPointSubscription持续时间的计时器。在该计时器到期时,您可以发送BaseNotification方法的续订请求。这将续订PullPoint订阅管理器的订阅持续时间

在我的例子中,问题是由于请求的头部没有完全填充,这与ArielY的情况类似

工作请求必须与以下内容类似:

POST/onvif/services HTTP/1.1
主机:>IP地址<
内容类型:应用程序/soap+xml;字符集=utf-8
内容长度:930
http://www.onvif.org/ver10/events/wsdl/PullPointSubscription/PullMessagesRequest
urn:uuid:27577591-b1f2-4750-a705-5036364fefc9
...
http://www.w3.org/2005/08/addressing/anonymous
41

http://>ipaddress是否使用c代码?请尝试其他参数。PT0H00 M05S是PT5S,许多相机都有MessageLimit的间隔,尝试其他值。我的代码是C++…问题是我没有填写页眉中的“to”属性……无论如何谢谢!