1

我正在尝试使用 python-onvif 库和命令行客户端来使用我拥有的网络摄像机。

当一切正常时,它很好,但如果我有一个错误,我几乎没有得到任何有用的信息。

例如,如果我使用错误的 cli 密码,我最终会得到:

#onvif-cli devicemgmt GetCapabilities --host 192.168.0.149 -u admin -a wrongpw
False: Unknown error: (400, u'Bad Request')

这是 Exception 导致它从 suds 上升到 python-onvif 并由 onvif-cli 工具打印的结果。

使用wireshark 进行跟踪显示,实际上返回的400 响应带有正确的SOAP 消息,表明身份验证失败。

使用 pdb 进行一点调试表明,底层的“suds”库似乎只是在吃掉该文本并抛出异常。我试图在 suds 客户端对象中使用“last_received()”来获取消息,但它没有 400 的内容 - 它具有正确接收到的最后一条消息。

我的代码有什么方法可以获取 400 消息的内容吗?我很高兴只得到原始字节——我只需要记录一些东西,这样当现场出现问题时,我至少可以知道相机认为正在发生什么。

我确实尝试在创建 suds.client.Client 时将“错误”选项设置为 False,但这只是让我将 (400, Bad Request) 作为元组返回 - 它仍然没有解码内容。

系统是CentOS 6.6,suds版本是0.4,python-onvif 0.1.3,python 2.6.6,摄像头是索尼EP580最新固件。

4

0 回答 0