XPages Extlib REST update (HTTP PUT) on calendar event is returning error code (cserror : 1028)

XPages Extlib REST update (HTTP PUT) on calendar event is returning error code (cserror : 1028)

我正在尝试使用最新的 xpages extlib 版本 "ExtensionLibraryOpenNTF-901v00_13.20150611-0803".

中的 REST 数据服务 "calendar" 更新 Domino 邮件日历中的日历事件

有没有body成功完成此操作的return?

不幸的是,我尝试更新日历事件时没有成功。我成功地获取了事件列表、创建事件、删除事件,但更新事件似乎有些特别。日历服务的 PDF 文档在这一点上非常简短。我的 domino 服务器接受所有协议,包括 PUT。我正在为我的 REST 调用使用 JSON 格式。我也按照 iCAL 文档中的描述尝试了更新,但出现了同样的错误。

在实施服务之前,我使用 Firefox REST 插件检查服务。

我正在使用 PUT,content-type "text/calendar" 以及 "application/json"。

我的URL:

http://sitlap55.xyzgmbh.de:8080/mail/padmin.nsf/api/calendar/events/4D750E2B8159D254C1257E9C0066D48D

我的Body是这样的,这是最简单的事件类型,提醒(但我也尝试过会议和约会):

{"events":[{"UID:"4D750E2B8159D254C1257E9C0066D48D","summary":"Ein Reminder update","start":{"date":"2015-08-13","time":"13:00:00","utc":true}}]}

这就是我通过 GET return 事件的方式: { "href": "/mail/padmin.nsf/api/calendar/events/4D750E2B8159D254C1257E9C0066D48D-Lotus_Notes_Generated", "id": "4D750E2B8159D254C1257E9C0066D48D-Lotus_Notes_Generated", "summary": "Ein Reminder", "start": { "date": "2015-08-12", "time": "07:00:00", "utc": true }, "class": "public", "transparency": "transparent", "sequence": 0, "x-lotus-summarydataonly": { "data": "TRUE" }, "x-lotus-appttype": { "data": "4" } }

这是我得到的错误: { "code": 400, "text": "Bad Request", "cserror": 1028, "message": "Error updating event", "type": "text", "data": "com.ibm.domino.calendar.store.StoreException: Error updating event\r\n\tat com.ibm.domino.calendar.dbstore.NotesCalendarStore.updateEvent(NotesCalendarStore.java:229)\r\n\tat ... 65 more\r\n" }

body中的属性我尝试了很多不同的东西,使用 id,没有 id,像日历服务文档中的 UID,...

我在这里做错了什么?



解决方法:

使用 PUT 方法,URL 看起来像这样:

 http://sitlap55.xyzgmbh.de:8080/mail/padmin.nsf/api/calendar/events/4D750E2B8159D254C1257E9C0066D48D-Lotus_Notes_Generated

BODY 看起来像这样:

{"events":[{"id":"4D750E2B8159D254C1257E9C0066D48D-Lotus_Notes_Generated","summary":"Some Reminder update #6","start":{"date":"2015-08-13","time":"10:00:00","utc":true}}]}

我发现 "id" 属性是必需的!有点奇怪,因为它已经在 URL.

我刚刚检查了 documentation for Domino Access Services (DAS) 9.0.1 - 他们那里的例子确实有效。

在那之前我尝试了一些东西,例如如果我可以 PATCH(更改单个字段)或 PUT(更改所有字段)只是指定非系统字段。 None 其中有效。但是从创建(或获取)事件中获取响应并将其放入 PUT 请求并进行调整,例如开始时间工作正常。

查看您的示例,我认为问题很相似,因为您没有在请求中包含结束时间。但即便如此,您似乎必须包含从服务返回的整个记录​​ - 请注意 url 必须以整个 ID 结尾(即包括“...-Lotus_Auto_Generated”) :-)

/约翰

编辑:

看来你不需要添加所有字段...但要注意不指定字段的副作用...你需要自己测试!