API EWS Java: запрос собрания устарел. Календарь не может быть обновлен
Я использую Microsoft EWS Java API для создания и принятия назначений от имени некоторых пользователей. То, как я это делаю, - отправить запрос на собрание, а затем настроить наблюдателей в почтовом ящике получателя и принять входящий элемент MeetingRequest
:
import microsoft.exchange.webservices.data.core.service.item.MeetingRequest;
void accept(MeetingRequest request) {
assert(!request.getIsOutOfDate());
request.accept(false);
}
Однако я получаю эту ошибку, когда пытаюсь принять запрос на собрание:
microsoft.exchange.webservices.data.core.exception.service.remote.ServiceResponseException: The meeting request is out of date. The calendar couldn't be updated.
at microsoft.exchange.webservices.data.core.response.ServiceResponse.internalThrowIfNecessary(ServiceResponse.java:278)
at microsoft.exchange.webservices.data.core.response.ServiceResponse.throwIfNecessary(ServiceResponse.java:267)
at microsoft.exchange.webservices.data.core.request.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:165)
at microsoft.exchange.webservices.data.core.ExchangeService.internalCreateResponseObject(ExchangeService.java:270)
at microsoft.exchange.webservices.data.core.service.response.ResponseObject.internalCreate(ResponseObject.java:120)
at microsoft.exchange.webservices.data.core.service.response.CalendarResponseMessageBase.calendarSave(CalendarResponseMessageBase.java:98)
at microsoft.exchange.webservices.data.core.service.item.MeetingRequest.internalAccept(MeetingRequest.java:218)
at microsoft.exchange.webservices.data.core.service.item.MeetingRequest.accept(MeetingRequest.java:184)
Это соответствует этой ошибке: ErrorMeetingRequestIsOutOfDate
. Я просмотрел MSDN для этой ошибки и не смог найти, почему эта ошибка может произойти со мной.
Что я делаю неправильно?
Ответы
Ответ 1
Говоря строго от клиента Outlook, вопрос заключается в списке (хотя и устаревших) потенциально полезных причин, по которым эта ошибка будет сгенерирована.
https://support.microsoft.com/en-us/kb/899704
Повторять события, когда начальное событие прошло в прошлом, является распространенным сценарием (наиболее распространенным для моего опыта), когда весь процесс является ручным (т.е. новый участник, добавленный после первого повторного события), хотя в список, который может применяться здесь.
Изменить. Я упоминаю повторы здесь как потенциальную попытку для вашего кода. Проверяет ли getIsOutOfDate() текущее событие или начальный старт шаблона...
MSKB усугубляется этим как текущая проблема, как программно, так и сценарии, просто из графического интерфейса клиента Outlook.
Изменить снова - То есть вы не делаете ничего плохого программно, там долго и разочаровывает историю с передней стороны. Чтобы избежать этого, вам может потребоваться больше ловушки, чем просто ErrorCalendarMeetingRequestIsOutOfDate.
http://www.experts-exchange.com/info/24578557/This-Request-is-Out-of-Date.html
(извините, количество ссылок ограничено моим профилем)