1

在测试用例中从 DUT 引发故障时出错。 ==================================================== ========

在测试用例 EventProperties>RealTimePullPointNotification Interface>EVENT-3-1-17-v14.12 REAL TIME PULL POINT SUBSCRIPTION-INVALID MESSAGE CONTENT FILTER 中,DUT 向客户端发送故障消息。

在验证客户端中的故障时(Onvif Device Test Tool Ver 6.12),我从命名空间 Addressing10(http://www.w3.org/2005/08/addressing)收到错误 No Action 元素。

我将 wsa:Action 元素设置为http://www.w3.org/2005/08/addressing/soap/fault然后我也收到上述错误。

onvif 设备测试工具的输出如下:

EVENT-3-1-17-v14.12 REALTIME PULLPOINT SUBSCRIPTION - INVALID MESSAGE CONTENT FILTER

STEP 4 - Create Pull Point Subscription - negative test
StepStart: 2019-11-13T17:18:31.6582116Z
Transmit done
Receive done
SOAP fault returned
Code: Sender
Reason: InvalidMessageContentExpression
Validate fault...
*No Action element from namespace Addressing10 (http://www.w3.org/2005/08/addressing). Expected element with value: http://www.w3.org/2005/08/addressing/soap/fault.*
STEP FAILED
TEST FAILED

我从 DUT 向客户端发送错误的 XML 如下: ===================================== ====================

*std::string soapFault =
"<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope">"
"<SOAP-ENV:Header xmlns:wsa="http://www.w3.org/2005/08/addressing" >"
"<wsa:MessageID>"
"urn:uuid:c9517d6a-44e7-427a-a1f4-6902eb52a979"
"</wsa:MessageID>"
"<wsa:ReplyTo SOAP-ENV:mustUnderstand="true">"
"<wsa:Address>http://192.168.0.95:8082/onvif</wsa:Address>"
"</wsa:ReplyTo>"
"<wsa:To SOAP-ENV:mustUnderstand="true">http://192.168.0.95:8082/onvif/event_service</wsa:To>"
"<wsa:Action SOAP-ENV:mustUnderstand="true">"http://www.w3.org/2005/08/addressing/soap/fault"</wsa:Action>"
"</SOAP-ENV:Header>"
"<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:InvalidArgVal</SOAP-ENV:Value>"
"<SOAP-ENV:Subcode>"
"<SOAP-ENV:Value>ter:InvalidMessageContentExpression</SOAP-ENV:Value>"
"</SOAP-ENV:Subcode>"
"</SOAP-ENV:Subcode>"
"</SOAP-ENV:Code>"
"<SOAP-ENV:Reason>"
"<SOAP-ENV:Text xml:lang="en"/>"
"</SOAP-ENV:Reason>"
"<SOAP-ENVetail>"
"</SOAP-ENVetail>"
"</SOAP-ENV:Fault>"
"</SOAP-ENV:Body>"
"</SOAP-ENV:Envelope>";*
4

1 回答 1

0

来自ONVIF 核心规范的 §9.9 :

9.9 SOAP 错误消息

如果设备在处理来自客户端或订阅管理器的 [WS-BaseNotification] 消息时遇到故障,则设备应生成 SOAP 1.2 故障消息。所有 SOAP 1.2 故障消息应根据 [WS-BaseNotification] 和 [ WS-Topics] 规范,但有一个例外;

所有故障都应为 WS-Addressing [action] 消息寻址属性使用以下 URI:

http://www.w3.org/2005/08/addressing/soap/fault

此外,该错误应作为 SOAP 接收器错误 (env:Receiver) 发送,即 HTTP 错误代码应为 500。

于 2019-11-14T09:56:42.493 回答