bil*_*ght 5 curl http http-authentication digest-authentication onvif
我正在尝试在 linux 中使用 curl 更改基于 Onvif 的相机的日期。我已经在 c# 中成功地做到了并使用了摘要身份验证,但我被困在了这种情况下。
我正在使用以下命令:
curl -u "admin:admin" --digest http://10.104.37.1:80/onvif/device_service --data '<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"><SetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"><DateTimeType>Manual</DateTimeType><DaylightSavings>false</DaylightSavings><TimeZone><TZ xmlns="http://www.onvif.org/ver10/schema">CST-0:00:00</TZ></TimeZone><UTCDateTime><Time xmlns="http://www.onvif.org/ver10/schema"><Hour>8</Hour><Minute>8</Minute><Second>8</Second></Time><Date xmlns="http://www.onvif.org/ver10/schema"><Year>2008</Year><Month>8</Month><Day>8</Day></Date></UTCDateTime></SetSystemDateAndTime></s:Body></s:Envelope>'
Run Code Online (Sandbox Code Playgroud)
我得到了以下结果(似乎卡住了):
- 即将 connect() 到 10.104.37.1 端口 80 (#0)
- 正在尝试 10.104.37.1... 已连接
- 连接到 10.104.37.1 (10.104.37.1) 端口 80 (#0)
- 使用 Digest 和用户“admin”进行服务器身份验证
- POST /onvif/device_service HTTP/1.1
- 用户代理:curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
- 主机:10.104.37.1
- 接受:/
- 内容长度:0
- 内容类型:应用程序/x-www-form-urlencoded
在这之后,什么也没有发生。
不得不说,如果我只是读取日期(此操作不需要身份验证)...
curl -u admin:admin http://10.104.37.1:80/onvif/device_service --data '<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>'
Run Code Online (Sandbox Code Playgroud)
...它做对了,但是如果我添加“--digest”,该过程将遵循之前评论过的行为。
任何人都可以给我一个提示?
谢谢!
编辑: 内容长度=0 是不是很奇怪?