我正在尝试使用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>'
我获得了以下结果(似乎卡住了):
- 即将连接()到10.104.37.1端口80(#0)
- 尝试10.104.37.1 ...已连接
- 连接到10.104.37.1(10.104.37.1)端口80(#0)
- 使用摘要与用户&#39; admin&#39;
进行服务器身份验证- POST / onvif / device_service HTTP / 1.1
- User-Agent: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
- 内容类型:application / 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>'
...它做得恰到好处,但是如果我添加&#34; - 摘要&#34;,则该过程遵循之前评论过的行为。
任何人都可以给我一个提示吗?
谢谢!
修改 内容长度= 0?
并不奇怪答案 0 :(得分:1)
我终于找到了解决此问题的解决方案:我在完整命令中添加了选项 - anyauth 。 无论如何,我仍然不知道为什么使用--digest选项会阻碍这个过程。