无效的SOAP消息或SOAP版本不匹配

无效的SOAP消息或SOAP版本不匹配,soap,Soap,我正在使用SOA客户端Firefox插件向一些ONVIF摄像头发送SOAP请求。下面您将看到对“GetServices”请求的请求。对于一个摄像头,它可以正常工作,但是对于另一个摄像头(AXIS摄像头),我得到了错误:“无效的SOAP消息或SOAP版本不匹配” 关于这一点还有其他问题。但没有一个答案对我来说是清楚的。其中一个提到了更改为soap版本1.2(我如何做到这一点?)。这个问题似乎可以通过一个简短的评论来解决: 如果有人认为这与我的案子有关,你能详细说明一下吗 URL = http://

我正在使用SOA客户端Firefox插件向一些ONVIF摄像头发送SOAP请求。下面您将看到对“GetServices”请求的请求。对于一个摄像头,它可以正常工作,但是对于另一个摄像头(AXIS摄像头),我得到了错误:“无效的SOAP消息或SOAP版本不匹配”

关于这一点还有其他问题。但没有一个答案对我来说是清楚的。其中一个提到了更改为soap版本1.2(我如何做到这一点?)。这个问题似乎可以通过一个简短的评论来解决: 如果有人认为这与我的案子有关,你能详细说明一下吗

URL = http://10.253.253.2/onvif/device_service
Method = POST

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope 
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
xmlns:ns0="http://www.onvif.org/ver10/device/wsdl" 
xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
    <wsse:Security mustUnderstand="true">
        <wsse:UsernameToken>
            <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">sLOOZG8o+369zaBclGwn4+tjOac=</wsse:Password>
            <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">NWQyMzVjNGNhYmIxMTQ1ZjEzZWVlYzcyZDkzZjcwODI=</wsse:Nonce>
            <wsu:Created>2015-07-27T15:47:31.178534Z</wsu:Created>
        </wsse:UsernameToken>
    </wsse:Security>
</SOAP-ENV:Header>
<ns1:Body>
    <ns0:GetServices>
        <ns0:IncludeCapability>false</ns0:IncludeCapability>
    </ns0:GetServices>
</ns1:Body>
</SOAP-ENV:Envelope>
URL=http://10.253.253.2/onvif/device_service
方法=员额
管理
sLOOZG8o+369zaBclGwn4+tjOac=
NWQYMZVJGNHYMIXMTQ1ZJEZZWVLYZYZDKZZJCWODI=
2015-07-27T15:47:31.178534Z
错误的
错误响应

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsa5="http://www.w3.org/2005/08/addressing" xmlns:xmime="http://tempuri.org/xmime.xsd" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:wsrfbf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:wsrfr="http://docs.oasis-open.org/wsrf/r-2" xmlns:aa="http://www.axis.com/vapix/ws/action1" xmlns:aev="http://www.axis.com/vapix/ws/event1" xmlns:ali1="http://www.axis.com/vapix/ws/light/CommonBinding" xmlns:ali2="http://www.axis.com/vapix/ws/light/IntensityBinding" xmlns:ali3="http://www.axis.com/vapix/ws/light/AngleOfIlluminationBinding" xmlns:ali4="http://www.axis.com/vapix/ws/light/DayNightSynchronizeBinding" xmlns:ali="http://www.axis.com/vapix/ws/light" xmlns:tan1="http://www.onvif.org/ver20/analytics/wsdl/RuleEngineBinding" xmlns:tan2="http://www.onvif.org/ver20/analytics/wsdl/AnalyticsEngineBinding" xmlns:tan="http://www.onvif.org/ver20/analytics/wsdl" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tev1="http://www.onvif.org/ver10/events/wsdl/NotificationProducerBinding" xmlns:tev2="http://www.onvif.org/ver10/events/wsdl/EventBinding" xmlns:tev3="http://www.onvif.org/ver10/events/wsdl/SubscriptionManagerBinding" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:tev4="http://www.onvif.org/ver10/events/wsdl/PullPointSubscriptionBinding" xmlns:tev="http://www.onvif.org/ver10/events/wsdl" xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:ter="http://www.onvif.org/ver10/error" xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsaxis="http://www.axis.com/2009/event/topics">
<SOAP-ENV:Body>
    <SOAP-ENV:Fault SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Code>
        <SOAP-ENV:Value>env:VersionMismatch</SOAP-ENV:Value>
    </SOAP-ENV:Code>
    <SOAP-ENV:Reason>
        <SOAP-ENV:Text xml:lang="en">SOAP version mismatch</SOAP-ENV:Text>
    </SOAP-ENV:Reason>
    <SOAP-ENV:Detail>
        <SOAP-ENV:Text>Invalid SOAP message or SOAP version mismatch</SOAP-ENV:Text>
    </SOAP-ENV:Detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

环境:版本匹配
SOAP版本不匹配
无效的SOAP消息或SOAP版本不匹配
更新

我后来发现,要更改为SOAPV1.2,您需要使用
http://www.w3.org/2003/05/soap-envelope
而不是
http://schemas.xmlsoap.org/soap/envelop

我试过了(上面代码中有两个替换),但在两个摄像头中都不起作用。我看不出我做错了什么。

好的,我知道了。axis相机需要SOAP v1.2。两个版本之间的区别是:xmlns的名称空间url:SOAP-ENV;http标头中的内容类型和操作

ONVIF使用SOAP v1.1

    url = http://10.253.253.159/onvif/device_service

    Method = POST

    http header = Content-Type: text/xml; charset=utf-8; action="http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime";

    <SOAP-ENV:Envelope 
                xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
                xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
                xmlns:wsdl="http://www.onvif.org/ver10/device/wsdl"
                xmlns:sch="http://www.onvif.org/ver10/schema"
         >
        <SOAP-ENV:Header>
            <wsse:Security mustUnderstand="true">
                <wsse:UsernameToken>
                    <wsse:Username>admin</wsse:Username>
                    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0">admin</wsse:Password>
                    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">NWQyMzVjNGNhYmIxMTQ1ZjEzZWVlYzcyZDkzZjcwODI=</wsse:Nonce>
                    <wsu:Created>2015-07-27T15:47:31.178534Z</wsu:Created>
                </wsse:UsernameToken>
            </wsse:Security>
        </SOAP-ENV:Header>
        <SOAP-ENV:Body>              
            <wsdl:GetSystemDateAndTime/> 
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
url=http://10.253.253.159/onvif/device_service
方法=员额
http头=内容类型:text/xml;字符集=utf-8;行动=”http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime";
管理
管理
NWQYMZVJGNHYMIXMTQ1ZJEZZWVLYZYZDKZZJCWODI=
2015-07-27T15:47:31.178534Z
ONVIF使用SOAP v1.2

    url = http://10.253.253.159/onvif/device_service

    Method = POST

    http header = Content-Type: application/soap+xml; charset=utf-8;  

    <SOAP-ENV:Envelope 
                xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
                xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
                xmlns:wsdl="http://www.onvif.org/ver10/device/wsdl"
                xmlns:sch="http://www.onvif.org/ver10/schema"
         >
        <SOAP-ENV:Header>
            <wsse:Security mustUnderstand="true">
                <wsse:UsernameToken>
                    <wsse:Username>admin</wsse:Username>
                    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0">admin</wsse:Password>
                    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">NWQyMzVjNGNhYmIxMTQ1ZjEzZWVlYzcyZDkzZjcwODI=</wsse:Nonce>
                    <wsu:Created>2015-07-27T15:47:31.178534Z</wsu:Created>
                </wsse:UsernameToken>
            </wsse:Security>                
        </SOAP-ENV:Header>
        <SOAP-ENV:Body>              
            <wsdl:GetSystemDateAndTime/>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
url=http://10.253.253.159/onvif/device_service
方法=员额
http头=内容类型:应用程序/soap+xml;字符集=utf-8;
管理
管理
NWQYMZVJGNHYMIXMTQ1ZJEZZWVLYZYZDKZZJCWODI=
2015-07-27T15:47:31.178534Z

好的,我知道了。axis相机需要SOAP v1.2。两个版本之间的区别是:xmlns的名称空间url:SOAP-ENV;http标头中的内容类型和操作

ONVIF使用SOAP v1.1

    url = http://10.253.253.159/onvif/device_service

    Method = POST

    http header = Content-Type: text/xml; charset=utf-8; action="http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime";

    <SOAP-ENV:Envelope 
                xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
                xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
                xmlns:wsdl="http://www.onvif.org/ver10/device/wsdl"
                xmlns:sch="http://www.onvif.org/ver10/schema"
         >
        <SOAP-ENV:Header>
            <wsse:Security mustUnderstand="true">
                <wsse:UsernameToken>
                    <wsse:Username>admin</wsse:Username>
                    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0">admin</wsse:Password>
                    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">NWQyMzVjNGNhYmIxMTQ1ZjEzZWVlYzcyZDkzZjcwODI=</wsse:Nonce>
                    <wsu:Created>2015-07-27T15:47:31.178534Z</wsu:Created>
                </wsse:UsernameToken>
            </wsse:Security>
        </SOAP-ENV:Header>
        <SOAP-ENV:Body>              
            <wsdl:GetSystemDateAndTime/> 
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
url=http://10.253.253.159/onvif/device_service
方法=员额
http头=内容类型:text/xml;字符集=utf-8;行动=”http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime";
管理
管理
NWQYMZVJGNHYMIXMTQ1ZJEZZWVLYZYZDKZZJCWODI=
2015-07-27T15:47:31.178534Z
ONVIF使用SOAP v1.2

    url = http://10.253.253.159/onvif/device_service

    Method = POST

    http header = Content-Type: application/soap+xml; charset=utf-8;  

    <SOAP-ENV:Envelope 
                xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
                xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
                xmlns:wsdl="http://www.onvif.org/ver10/device/wsdl"
                xmlns:sch="http://www.onvif.org/ver10/schema"
         >
        <SOAP-ENV:Header>
            <wsse:Security mustUnderstand="true">
                <wsse:UsernameToken>
                    <wsse:Username>admin</wsse:Username>
                    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0">admin</wsse:Password>
                    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">NWQyMzVjNGNhYmIxMTQ1ZjEzZWVlYzcyZDkzZjcwODI=</wsse:Nonce>
                    <wsu:Created>2015-07-27T15:47:31.178534Z</wsu:Created>
                </wsse:UsernameToken>
            </wsse:Security>                
        </SOAP-ENV:Header>
        <SOAP-ENV:Body>              
            <wsdl:GetSystemDateAndTime/>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
url=http://10.253.253.159/onvif/device_service
方法=员额
http头=内容类型:应用程序/soap+xml;字符集=utf-8;
管理
管理
NWQYMZVJGNHYMIXMTQ1ZJEZZWVLYZYZDKZZJCWODI=
2015-07-27T15:47:31.178534Z

@spiderplant0给出了正确的答案。在我的例子中,我有一个SoapUI项目,我试图调用SOAP1.2端点。我将WS-Security配置到此项目中,但使用了错误的命名空间“http://schemas.xmlsoap.org/soap/envelope/“在签名步骤中,特别是在身体部位。由于这种错误配置,端点一直告诉我它“无法验证请求:安全处理失败(操作不匹配)”,这对我来说没有意义,因为WS-security步骤的顺序是正确的

我用正确的名称空间替换了错误的名称空间“http://www.w3.org/2003/05/soap-envelope“,它成功了


感谢@spiderplant0指出这一点

@spiderplant0给出了正确的答案。在我的例子中,我有一个SoapUI项目,我试图调用SOAP1.2端点。我将WS-Security配置到此项目中,但使用了错误的命名空间“http://schemas.xmlsoap.org/soap/envelope/“在签名步骤中,特别是在身体部位。由于这种错误配置,端点一直告诉我它“无法验证请求:安全处理失败(操作不匹配)”,这对我来说没有意义,因为WS-security步骤的顺序是正确的

我用正确的名称空间替换了错误的名称空间“http://www.w3.org/2003/05/soap-envelope“,它成功了


感谢@spiderplant0指出这一点

我正在使用SoapUI发送soap请求。我将把“http头=内容类型:application/soap+xml;charset=utf-8”放在哪里;我正在使用SoapUI发送soap请求。我将把“http头=内容类型:application/soap+xml;charset=utf-8