展望REST API同步消息:在过去的响应没有deltaLink

问题描述:

我使用的是Outlook REST API 2.0版,并按照指示从文档:https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations#synchronize-messages展望REST API同步消息:在过去的响应没有deltaLink

一切顺利,我送Prefer: odata.track-change头与初始和“增量”请求,收到Preference-Applied: odata.track-changes与初始响应(不与“delta”或“跳过”响应),收到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是坏的?

+0

我刚测试过它,没有问题。要清楚,您是否在发送每个请求时都发送Prefer标头(带有odata.track-changes和odata.maxpagesize)? –

+0

我发送'prefer:odata.track-changes'与“初始”和“delta”请求。我试着提供并跳过'maxpagesize' - 同样的行为。 – gistart

+0

好吧,为所有请求添加'prefer:odata.track-changes',现在它可以工作。文档中的文本和示例都表示不需要'skipToken'请求,这是一个错误信息。 – gistart

结果发现,尽管文档和示例中的文档说您不会发送Prefer: odata.track-changes标头和skipToken请求,但您必须这样做才能接收'deltaToken'。

enter image description here