ONVIF摄像头SetHostName请求失败,寻求技术协助
ONVIF SetHostName 请求报错排查与修正
问题分析
你的请求报文存在两个核心问题:
- 命名空间缺失:
tds和tt前缀未在Envelope节点声明对应命名空间,ONVIF服务无法识别这些元素 - 参数结构错误:
SetHostName请求不需要嵌套HostnameInformation节点,直接传入Name参数即可
修正后的请求报文
<?xml version='1.0' encoding='utf-8' ?> <soap-env:Envelope xmlns:soap-env="http://www.w3.org/2003/05/soap-envelope" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema"> <soap-env:Header> <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <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">gfdsgfsgfsgfs</wsse:Password> <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">fdsgfdsgfsdfgsd</wsse:Nonce> <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2024-01-17T14:03:35+00:00</wsu:Created> </wsse:UsernameToken> </wsse:Security> </soap-env:Header> <soap-env:Body> <tds:SetHostName> <tt:Name>NewHostname1234</tt:Name> </tds:SetHostName> </soap-env:Body> </soap-env:Envelope>
关键修正说明
- 在Envelope节点添加
tds(设备服务命名空间)和tt(通用 schema 命名空间)的声明,确保服务能正确解析元素前缀 - 移除冗余的
tds:HostnameInformation节点,遵循ONVIF标准的请求参数结构 - 保留原有的WS-Security认证部分(注意:密码摘要、Nonce和Created时间必须是实时生成的有效组合,避免因过期或哈希无效导致认证失败)
内容的提问来源于stack exchange,提问作者Greg Priest
相关产品推荐
相关产品推荐

