Office 365 REST API中日期的Odata $筛选器
我试图从其Office 365帐户使用REST API检索用户的事件,但通过“开始”字段进行筛选。例如,检索所有日期之后将发生的事件:2014-08-29T09:13:28' 但我始终检索此错误消息
{
"error": {
"code": "ErrorInvalidUrlQuery",
"message": "The query parameter '$filter' is invalid.",
"innererror": {
"message": "The query parameter '$filter' is invalid.",
"type": "Microsoft.Exchange.Services.OData.InvalidUrlQueryException",
"stacktrace": " at Microsoft.Exchange.Services.OData.Web.ODataQueryOptions.Populate()
at Microsoft.Exchange.Services.OData.ODataContext..ctor(HttpContext httpContext, Uri requestUri, ServiceModel serviceModel, ODataPathWrapper odataPath, ODataUriParser odataUriParser)
at Microsoft.Exchange.Services.OData.Web.RequestBroker.InitializeODataContext()
at Microsoft.Exchange.Services.OData.Web.RequestBroker.Process()",
"internalexception": {
"message": "A binary operator with incompatible types was detected. Found operand types 'Edm.DateTimeOffset' and 'Edm.Int32' for operator kind 'Equal'.",
"type": "Microsoft.OData.Core.ODataException",
"stacktrace": " at Microsoft.OData.Core.UriParser.Parsers.BinaryOperatorBinder.PromoteOperandTypes(BinaryOperatorKind binaryOperatorKind, SingleValueNode& left, SingleValueNode& right)
at Microsoft.OData.Core.UriParser.Parsers.BinaryOperatorBinder.BindBinaryOperator(BinaryOperatorToken binaryOperatorToken)
at Microsoft.OData.Core.UriParser.Parsers.MetadataBinder.Bind(QueryToken token)
at Microsoft.OData.Core.UriParser.Parsers.FilterBinder.BindFilter(QueryToken filter)
at Microsoft.OData.Core.UriParser.ODataUriParser.ParseFilterImplementation(String filter, IEdmType elementType, IEdmNavigationSource navigationSource)
at Microsoft.OData.Core.UriParser.ODataUriParser.ParseFilter()
at Microsoft.Exchange.Services.OData.Web.ODataQueryOptions.Populate()"
}
}
}
}
在这里,我已经尝试了所有的东西:
[的ressource] = https://outlook.office365.com/
URL:[的ressource] EWS /的OData/ME /活动$滤波器=起始%20当量%20DateTime'2012-05-29T09:13:28'
url:[ressource] EWS/OData/Me/Events?$ filter = Start%20eq%20DateTime'20141 231'
网址:[的ressource] EWS /的OData/ME /活动$过滤=月(开始)%20当量%2012
,我已经尝试了字符串字段或$ $的过滤器?选择开始,它的工作完美,所以我认为我的错误是由日期格式引起的,但我不知道如何解决它,所以如果有人能帮助我,那就太棒了!
谢谢!
在日期上过滤确实奏效,但您无法在OData v4规范中做所有事情。例如,这些全部为我工作:
/Me/Events?$filter=Start eq 2014-08-28T21:00:00Z
/Me/Events?$filter=Start ge 2014-08-28T21:00:00Z
在它前面添加“DateTime”使它失败。与月份功能相同。如果你坚持上面的格式,它应该适合你。
Samir,can你将编辑扩展到我的答案? Event实体上没有名为“DateTimeStart”的属性。 – 2014-09-23 14:21:10
啊,我的错误我误解了你的答案 - 其他实体上的一些属性名称为“DateTimeX”,我以为你引用了这些。我将恢复编辑 – samirahmed 2014-09-25 03:41:12
嗨只要增加顶部= 100或更多,无论你想从你的收件箱拉。
https://outlook.office365.com/api/v2.0/me/MailFolders/Inbox/messages/?%24select=CreatedDateTime%2cLastModifiedDateTime%2cChangeKey%2cCategories%2cReceivedDateTime%2cSentDateTime%2cHasAttachments%2cSubject%2cBody%2cImportance%2cParentFolderId%2cSender%2cFrom%2cToRecipients%2cCcRecipients%2cBccRecipients%2cReplyTo%2cConversationId%2cIsDeliveryReceiptRequested%2cIsReadReceiptRequested%2cIsRead%2cIsDraft%2cWebLink&%24top=100&%24skip=0"
在O365 REST API的V2,你应该使用:
URL encoded: $filter=Start/DateTime%20ge%20%272017-03-15T00:00:00Z%27
Not URL encoded: $filter=Start/DateTime ge '2017-03-15T00:00:00Z'
基于API文档上似乎'$ filter'不支持。 http://msdn.microsoft.com/en-us/library/office/dn792114%28v=office.15%29.aspx – wdosanjos 2014-08-29 19:09:52
@wdosanjos感谢您的回答,但在其文档上,Microsoft似乎表示支持:引用:“或通过使用$过滤器OData查询参数筛选列表”http://msdn.microsoft.com/EN-US/library/office/dn792114%28v=office.15%29.aspx#sectionSection3 – nicodri 2014-08-29 19:59:21
您'再右吧。我确实尝试了我的最终结果,尽管url语法正确,但我得到了完全相同的错误。我也尝试了其他(非日期)属性,结果相同。 – wdosanjos 2014-08-29 20:07:50