Soap 通过ONVIF编程访问海康威视摄像头时出现GetProfiles问题

Soap 通过ONVIF编程访问海康威视摄像头时出现GetProfiles问题,soap,onvif,Soap,Onvif,问题: 我在开发Cocoa ONVIF驱动程序时使用了许多测试摄像头。我有AXIS、Dahua和海康威视(到目前为止,还会有更多) 所有摄像机均声称符合剖面图S和剖面图G AXIS摄像机是唯一按预期运行的摄像机 如果我直接向大多数应用程序发送URI,它们都可以返回RTSP图像数据(我知道,这就是大多数“ONVIF”应用程序的工作方式) 我想做的是,使用“适当的通道”访问这些设备 这意味着运行强制的GetProfiles查询,如下所示: <?xml version="1.0" encodin

问题:

我在开发Cocoa ONVIF驱动程序时使用了许多测试摄像头。我有AXIS、Dahua和海康威视(到目前为止,还会有更多)

所有摄像机均声称符合剖面图S和剖面图G

AXIS摄像机是唯一按预期运行的摄像机

如果我直接向大多数应用程序发送URI,它们都可以返回RTSP图像数据(我知道,这就是大多数“ONVIF”应用程序的工作方式)

我想做的是,使用“适当的通道”访问这些设备

这意味着运行强制的GetProfiles查询,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
 xmlns:trt="http://www.onvif.org/ver10/media/wsdl">
    <soap:Body>
        <trt:GetProfiles/>
    </soap:Body>
</soap:Envelope>

那是教科书。直接从ONVIF应用程序编程指南中获得。我正在使用REST注入应用程序来测试这一点,使用POST。我已经使用完全管理员用户将身份验证设置为基本身份验证

问题是海康威视摄像头始终返回“未执行可选操作”故障,这是他们表示“我们不喜欢您发送的内容”的方式

我应该注意到,核心命令,如“GetServices”和“GetCapabilities”工作得很好

在ONVIF上有一些宝贵的经验教训。我认为这是一个仍在努力自立的标准

我在外面看到的只有一件事

这不适用于我。当我使用任何一个WSDL版本时,都会出现同样的问题

当我使用Wireshark连接到摄像头的应用程序时,我看到的只是它们直接发送一个RTSP URI。没有提到“GetProfiles”

我的问题是,这是其他人遇到过的问题吗


如果是,它是如何解决的?我正在学习厌恶ONVIF规范,因为很难找到详细的数据包描述。

似乎您正在将所有请求发布到同一个URI
GetServices
GetCapabilities
属于设备管理服务,而
GetProfiles
属于媒体服务,可能具有不同的URI(这是您必须使用
GetServices
验证的内容)


ONVIF规格非常丰富,我建议您从新的开始。它让您了解如何构建应用程序。

请注意:我对海康威视技术支持有一个问题。到目前为止,蟋蟀在啁啾。好的。我想我看到了一个问题。我认为我没有正确解析对GetServices的响应,因此只返回名称空间URI。我会从那里开始,一直干下去。成功了。谢谢我会核对你的答案。请记录在案,这个错误是我的。我错误地解释了GetServices调用(我确实阅读了API规范-如果没有,我不会走到这一步)。因此,我没有提供正确的本地路径。AXIS对所有内容使用相同的路径,但海康威视对每个命名空间使用不同的路径。这就是它失败的原因。