0

我需要使用 OutLook 365 API 但使用 Outlookservicesclient 执行 OData 查询 $search = "subject:pizza"(在 Outlook 365 sdk 中找到,这个 nuget https://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();

产生以下 RequestURIhttps://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:pizzaRequestURI!如果不实际使用休息客户端,这似乎是不可能的,因为 Outlook 客户端似乎仅限于内置的 Linq 方法。

添加了客户端库没有参考文档的事实,我遇到了死胡同。有谁知道是否可以通过outlookservicesclient 包含$search?

4

1 回答 1

2

我与 OData.NET 人员进行了核对,他们在 GitHub 上打开了一个问题,以跟踪$search添加AddQueryOption. 与此同时,他们建议你可以尝试这样的事情来让它发挥作用:

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");
于 2015-12-01T12:58:06.497 回答