Outlook REST API同步消息:上次响应中没有deltaLink

时间:2017-07-12 22:28:18

标签: office365api outlook-restapi outlook-api

我使用的是Outlook REST API v2.0,并按照文档中的说明操作:https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations#synchronize-messages

一切顺利,我发送Prefer: odata.track-change标题首字母和" delta"请求,收到Preference-Applied: odata.track-changes初始回复(不是" delta"或"跳过"回复),接收nextLink,同时仍有要同步的消息,但是当回合结束时,文档说我应该收到deltaLink,我可以在下一轮中使用,但是我没有收到它。

这里我打印请求URL,接收消息的计数和解析的json响应的键:

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

<<<<<<< https://outlook.office.com/api/v2.0/users/UserX@myorg.onmicrosoft.com/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/UserX@myorg.onmicrosoft.com/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/UserX@myorg.onmicrosoft.com/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/UserX@myorg.onmicrosoft.com/MailFolders/Inbox/messages/?%24skipToken=x6ACAqs7JAHtb4FNhCplyPMw9QUAAGlsP20EAAAA
>> messages: 93
>> response keys: [u'@odata.context', u'value']

如您所见,我也使用x-AnchorMailbox模仿,但未明确禁止。

那么,我做错了什么,或者这个API坏了吗?

1 个答案:

答案 0 :(得分:0)

原来,尽管文本和示例中的文档说您没有向Prefer: odata.track-changes请求发送skipToken标题,但您必须这样做以接收`deltaToken'。

enter image description here