我创建了一个演示Nextcloud构建(后端似乎是SabreDAV)并启用了日历应用程序。诸如PROPFIND之类的功能通过CURL起作用,但是我无法创建新的日历(不是日历对象)。
服务器上不存在MKCALENDAR函数,因此我正在使用基于RFC5689规范的MKCOL,如下所示:
<D:mkcol xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:set>
<D:prop>
<D:resourcetype>
<D:collection/>
<C:calendar/>
</D:resourcetype>
<D:displayname>New Event XYZ</D:displayname>
</D:prop>
</D:set>
</D:mkcol>
这是我正在运行的完整命令:
curl -v --user "admin:admin" -H "Content-Type: application/xml" -X MKCOL "https://try.nextcloud.com/ohth5ael/remote.php/dav/" -d '<?xml version="1.0" encoding="utf-8" ?><D:mkcol xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"><D:set><D:prop><D:resourcetype><D:collection/><C:calendar/></D:resourcetype><D:displayname>Lisas Events</D:displayname></D:prop></D:set></D:mkcol>'
错误响应:
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre\DAV\Exception\NotFound</s:exception>
<s:message>Node with name 'root' could not be found</s:message>
</d:error>```
答案 0 :(得分:0)
结果证明MKCALENDAR可以工作,但是由于请求不正确而被拒绝。
要发送的URL需要指向正在创建的日历。它不是从XML中的“ displayname”条目派生的。所以:
curl -v --user "admin:admin" -H "Content-Type: application/xml" -X MKCALENDAR "https://try.nextcloud.com/ohth5ael/remote.php/dav/calendars/admin/newcal"
除非您要调整日历参数(显示名称,颜色等),否则请求正文中不需要任何内容。