Visual c++ gSoap故障SOAP-ENV:MustUnderstand[无子代码]
我正在使用gSoap为ONVIF摄像头构建一个web服务。 我已经使用ONVIF at提供的核心wdsl生成了头文件和源文件 但是,每次我从客户端发出请求时,我都会在函数Visual c++ gSoap故障SOAP-ENV:MustUnderstand[无子代码],visual-c++,soap,gsoap,onvif,Visual C++,Soap,Gsoap,Onvif,我正在使用gSoap为ONVIF摄像头构建一个web服务。 我已经使用ONVIF at提供的核心wdsl生成了头文件和源文件 但是,每次我从客户端发出请求时,我都会在函数soap\u begin\u serve(soap)中得到以下错误: 上面的错误是什么意思?我如何修复它 编辑:这是我在相机端收到的信息: POST / HTTP/1.1 Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org
soap\u begin\u serve(soap)
中得到以下错误:
上面的错误是什么意思?我如何修复它
编辑:这是我在相机端收到的信息:
POST / HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime"
Host: localhost:8090
Content-Length: 261
Accept-Encoding: gzip, deflate
Connection: Close
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>POST / HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org/ver10/device/wsdl/GetScopes"
Host: localhost:8090
Content-Length: 905
Accept-Encoding: gzip, deflate
Connection: Close
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header><Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><UsernameToken><Username>admin</Username><Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">WFz21zL8rch8LRoxAPzgHRMBbr0=</Password><Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">9y79ka0xD02oCIw6GAoIPwEAAAAAAA==</Nonce><Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-05-21T08:15:58.902Z</Created></UsernameToken></Security></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetScopes xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>
POST/HTTP/1.1
内容类型:应用程序/soap+xml;字符集=utf-8;行动=”http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime"
主机:本地主机:8090
内容长度:261
接受编码:gzip,deflate
连接:关闭
POST/HTTP/1.1
内容类型:应用程序/soap+xml;字符集=utf-8;行动=”http://www.onvif.org/ver10/device/wsdl/GetScopes"
主机:本地主机:8090
内容长度:905
接受编码:gzip,deflate
连接:关闭
adminWFz21zL8rch8LRoxAPzgHRMBbr0=9y79ka0xd02ociw6gaoipweaaaaaa==2017-05-21T08:15:58.902Z
SOAP 1.2故障SOAP-ENV:MustUnderstand[无子代码]
“必须理解元素“Security”中的数据,但不能对其进行处理”
这意味着您需要启用WS-Security以进行身份验证:
#将“wsse.h”
导入soapcpp2要处理的.h
头文件(又称服务和数据绑定“接口文件”)soap\u wsse\u add\u UsernameTokenDigest(soap,NULL,“username”,“password”)提供用户凭据代码>
-DWITH_OPENSSL
编译源代码,并与plugin/wsseapi.c
、plugin/smdevp.c
和plugin/mecevp.c
一起编译应用程序代码库(plugin
目录位于gSOAP发行版路径中),当然还要编译stdsoap2.c
或stdsoap2.cpp
和其他生成的文件-lssl-lcrypto
,如果需要压缩,还可以链接-lz
-DWITH_OPENSSL-DWITH_DOM-DWITH_GZIP
编译所有的源代码,并与代码一起编译DOM.c
或DOM.cpp
希望这有帮助。UsernameToken/Security标头中有问题。您可以将发送给摄像头的SOAP消息发布吗?发布了摄像头接收到的请求。谢谢。我必须单独配置gsoap以实现WS-Security吗?
POST / HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime"
Host: localhost:8090
Content-Length: 261
Accept-Encoding: gzip, deflate
Connection: Close
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>POST / HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org/ver10/device/wsdl/GetScopes"
Host: localhost:8090
Content-Length: 905
Accept-Encoding: gzip, deflate
Connection: Close
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Header><Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><UsernameToken><Username>admin</Username><Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">WFz21zL8rch8LRoxAPzgHRMBbr0=</Password><Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">9y79ka0xD02oCIw6GAoIPwEAAAAAAA==</Nonce><Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-05-21T08:15:58.902Z</Created></UsernameToken></Security></s:Header><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetScopes xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>