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”) :-)
/约翰
编辑:
看来你不需要添加所有字段...但要注意不指定字段的副作用...你需要自己测试!
我正在尝试使用最新的 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”) :-)
/约翰
编辑:
看来你不需要添加所有字段...但要注意不指定字段的副作用...你需要自己测试!