OData 搜索与 Office 365 邮件 API .NET 客户端
OData Search with Office 365 Mail API .NET Client
我需要使用 OutLook 365 API 执行 OData 查询 $search = "subject:pizza" 但使用 Outlookservicesclient(在 outlook 365 sdk 中找到,这个 nuget https://www.nuget.org/packages/Microsoft.Office365.OutlookServices-V2.0/)
看到这个OutLookAPI OData query Reference
使用 HttpClient 可以正常工作,但使用 .NET 客户端库时,似乎无法添加任何非标准查询参数。
即: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");
或者returns 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!如果不实际使用休息客户端,这似乎是不可能的,因为 Outlook 客户端似乎仅限于内置的 Linq 方法。
添加了客户端库没有参考文档的事实,我走到了死胡同。有谁知道是否可以通过 outlookservicesclient 包含 $search?
我咨询了 OData.NET 的人,他们打开了一个 issue on 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");
我需要使用 OutLook 365 API 执行 OData 查询 $search = "subject:pizza" 但使用 Outlookservicesclient(在 outlook 365 sdk 中找到,这个 nuget https://www.nuget.org/packages/Microsoft.Office365.OutlookServices-V2.0/)
看到这个OutLookAPI OData query Reference
使用 HttpClient 可以正常工作,但使用 .NET 客户端库时,似乎无法添加任何非标准查询参数。
即: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");
或者returns 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!如果不实际使用休息客户端,这似乎是不可能的,因为 Outlook 客户端似乎仅限于内置的 Linq 方法。
添加了客户端库没有参考文档的事实,我走到了死胡同。有谁知道是否可以通过 outlookservicesclient 包含 $search?
我咨询了 OData.NET 的人,他们打开了一个 issue on 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");