Сообщения синхронизации API REST Outlook: нет deltaLink в последнем ответе

Я использую Outlook REST API версии 2.0 и следую инструкциям из документации: https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations#synchronize-сообщения

Все идет нормально, я отправляю Prefer: odata.track-change заголовок с начальными и "дельта" запросами, получаю Preference-Applied: odata.track-changes с начальным ответом (не с "дельта" или "пропуском" ответов), получаю nextLink пока еще есть сообщения для синхронизации, но когда раунд заканчивается, в документах говорится, что я должен получить deltaLink, которые я могу использовать в следующих раундах, но я их не получаю.

Здесь я печатаю URL-адрес запроса, количество полученных сообщений и ключи проанализированного ответа json:

<<<< init url: https://outlook.office.com/api/v2.0/users/[email protected]/MailFolders/Inbox/messages
>> init messages: 100
>> init keys: [u'@odata.deltaLink', u'@odata.context', u'value']

<<<<<<< https://outlook.office.com/api/v2.0/users/[email protected]/MailFolders/Inbox/messages/?%24deltatoken=x6ACBKs7JAHtb4FNhCplyPMw9QUAAGlsP20BAAAA
>> messages: 100
>> response keys: [u'@odata.nextLink', u'@odata.context', u'value']

<<<<<<< https://outlook.office.com/api/v2.0/users/[email protected]/MailFolders/Inbox/messages/?%24skipToken=x6ACAqs7JAHtb4FNhCplyPMw9QUAAGlsP20CAAAA
>> messages: 100
>> response keys: [u'@odata.nextLink', u'@odata.context', u'value']

<<<<<<< https://outlook.office.com/api/v2.0/users/[email protected]/MailFolders/Inbox/messages/?%24skipToken=x6ACAqs7JAHtb4FNhCplyPMw9QUAAGlsP20DAAAA
>> messages: 100
>> response keys: [u'@odata.nextLink', u'@odata.context', u'value']

<<<<<<< https://outlook.office.com/api/v2.0/users/[email protected]/MailFolders/Inbox/messages/?%24skipToken=x6ACAqs7JAHtb4FNhCplyPMw9QUAAGlsP20EAAAA
>> messages: 93
>> response keys: [u'@odata.context', u'value']

Как видите, я также использую x-AnchorMailbox олицетворение, но это явно не запрещено.

Итак, я что-то делаю не так, или этот API не работает?


person gistart    schedule 12.07.2017    source источник
comment
Я только что проверил это, и у меня не было проблем. Чтобы было ясно, вы отправляете заголовок Prefer (с odata.track-changes и odata.maxpagesize) с каждым запросом?   -  person Jason Johnston    schedule 13.07.2017
comment
Я отправляю prefer: odata.track-changes с начальным и дельта-запросами. Я пробовал как предоставить, так и пропустить maxpagesize - такое же поведение.   -  person gistart    schedule 13.07.2017
comment
Ок, добавил prefer: odata.track-changes ко всем запросам и теперь работает. Текст и примеры в документации говорят, что это не нужно с запросом skipToken, что является дезинформацией.   -  person gistart    schedule 13.07.2017
comment
Спасибо! Я передам это людям из документации, чтобы мы могли это исправить.   -  person Jason Johnston    schedule 13.07.2017


Ответы (1)


Оказалось, несмотря на то, что документы в текстах и ​​​​примерах говорят, что вы не отправляете Prefer: odata.track-changes заголовок с skipToken запросами, вы должны сделать это, чтобы получить `deltaToken'.

введите здесь описание изображения

person gistart    schedule 13.07.2017