Caldav 通过CURL在Nextcloud/SabreDAV中创建新日历

Caldav 通过CURL在Nextcloud/SabreDAV中创建新日历,caldav,nextcloud,sabredav,Caldav,Nextcloud,Sabredav,我已经创建了一个演示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

我已经创建了一个演示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>

新事件XYZ
下面是我正在运行的完整命令:

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>'
curl-v——用户“admin:admin”-H“内容类型:application/xml”-X MKCOL”https://try.nextcloud.com/ohth5ael/remote.php/dav/“-d‘Lisas事件’
以及错误响应:

<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>```

Sabre\DAV\Exception\NotFound
找不到名为“root”的节点
```

结果显示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"
请求正文中不需要任何内容,除非您希望调整日历参数(显示名称、颜色等)