Curl
使用 curl 將日曆事件添加到 Nextcloud
我沒有成功嘗試使用 cURL 將事件添加到 Nextcloud 議程(Nextcloud 版本 16):
curl --user 'user:pass' -X PUT \ https://myNCserver/remote.php/dav/calendars/user/myCalendar /Myevents-Z2HOOON14VOH09RIACY3IL3W.ics \ -H "Content-Type: text/calendar ; charset=utf-8" --data @myEvent.ics
myEvent.ics 文件的內容:
BEGIN:VCALENDAR PRODID:-//My own caldav script VERSION:2.0 CALSCALE:GREGORIAN BEGIN:VEVENT CREATED:20190606T094245 DTSTAMP:20190606T094245 LAST-MODIFIED:20190606T094245 UID:VYM30SH4VNJFV4CWAUC0V9 SUMMARY:Test added using cURL ! CLASS:PUBLIC STATUS:CONFIRMED DTSTART;TZID=Europe/Zurich:20190606T200000 DTEND;TZID=Europe/Zurich:20190606T210000 END:VEVENT BEGIN:VTIMEZONE TZID:Europe/Zurich BEGIN:DAYLIGHT TZOFFSETFROM:+0100 TZOFFSETTO:+0200 TZNAME:CEST DTSTART:19700329T020000 RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU END:DAYLIGHT BEGIN:STANDARD TZOFFSETFROM:+0200 TZOFFSETTO:+0100 TZNAME:CET DTSTART:19701025T030000 RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU END:STANDARD END:VTIMEZONE END:VCALENDAR
我已使用https://icalendar.org/validator.html驗證了此內容
UID 是使用隨機生成的:
cat /dev/urandom | tr -dc 'A-Z0-9' | fold -w 22 | head -n 1
文件/資源名稱相同
Myevents-Z2HOOON14VOH09RIACY3IL3W.ics
我從伺服器收到以下答案:
<?xml version="1.0" encoding="utf-8"?> <d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns"> <s:exception>Sabre\DAV\Exception\UnsupportedMediaType</s:exception> <s:message>This resource only supports valid iCalendar 2.0 data. Parse error: This parser only supports VCARD and VCALENDAR files</s:message> </d:error>
我試圖重命名
.ics
in.vcal
,沒有運氣。我還查看了 Nextcloud 日誌文件,它包含一個大的 json 數組,它沒有提供比返回的錯誤消息更多的資訊。
找到了解決方案:
--data myEvent.ics
curl 的選項在這裡不行,因為它不保留送出的數據文件的換行符。相反,必須使用
--data-binary @myEvent.ics
! 此選項保留換行符,然後 Nextcloud 伺服器接受請求並在日曆中創建事件。見https://curl.haxx.se/docs/manpage.html