使用Office 365 Mail API.NET客户端进行OData搜索

本文关键字:OData 搜索 客户端 NET Office Mail API 使用 | 更新日期: 2023-09-27 18:24:39

我需要使用OutLook 365 API但使用Outlookservicesclient(在OutLook 365 sdk中找到,此nugethttps://www.nuget.org/packages/Microsoft.Office365.OutlookServices-V2.0/)

请参阅此OutLookAPI OData查询参考

使用HttpClient可以正常工作,但使用.NET客户端库,似乎不可能添加任何非标准的查询参数。

Ie:var messages = await client.Users['mail@me.com'].Messages .Where(m => m.IsRead == false) .Take(50) .ExecuteAsync();

生成以下RequestURI https://outlook.office365.com/api/v2.0/Users('mail%40me.com')/Messages?$filter=IsRead eq false&$top=50并正确执行。

而如果尝试以下操作,var query = client.Users['Mail@me.com'].Messages .Context.CreateQuery<Message>("Users('Mail@me.com')/Messages") .AddQueryOption("$search", "subject:pizza");

任一返回Exception:Thrown: "Can't add query option '$search' because it begins with reserved character '$'." (System.NotSupportedException) A System.NotSupportedException was thrown: "Can't add query option '$search' because it begins with reserved character '$'."

或者如果我省略AddQueryOption行,我会得到身份验证错误。

我所需要做的就是将$search=subject:pizza附加到RequestURI!如果不实际使用rest客户端,这似乎是不可能的,因为Outlook客户端似乎仅限于内置的Linq方法。

再加上没有客户端库的参考文档,我陷入了死胡同。有人知道是否可以通过outlookservicesclient包含$search吗?

使用Office 365 Mail API.NET客户端进行OData搜索

我与OData.NET人员核实过,他们在GitHub上发现了一个问题,以跟踪用AddQueryOption添加$search的错误。与此同时,他们建议你可以尝试这样的方法:

var query = context.CreateQuery("Users('Mail@me.com')/Messages");
var searchUri = new Uri(query.RequestUri.OriginalString + "?$search=%22subject%3Apizza%22");
var messages =  context.Execute<Message>(searchUri, "Get");