如何使用 Microsoft Graph .NET SDK 检索 OneNote 页面的内容?
How do I retrieve the content of a OneNote page using the Microsoft Graph .NET SDK?
我正在换掉我对旧 OneDrive SDK 的使用,以编程方式在 UWP 应用程序中访问 OneNote 的内容,并且我已经开始使用 Microsoft Graph for .NET SDK。我需要做的一件事是获取特定页面的内容。目前,我正在尝试这样做:
await _graphClient.Me.Onenote.Pages
.Request()
.Filter("tolower(title) eq 'shopping list'")
.GetAsync();
...这有效,并为我提供了笔记本中标题为 "shopping list" 的所有页面。但是,所有这些页面都有 null
Content
属性,让我无法获取这些页面的 HTML 内容。我可以验证这些页面中至少有一个确实在 OneNote 应用程序中包含内容。
我已经通读了 SDK 的文档,看来我应该得到一个 Stream
的回复,而无需任何进一步的操作。我是否遗漏了一个步骤,或者我是否错误地使用了 API?
可以按单个页面请求页面内容,例如:
GET https://graph.microsoft.com/v1.0/me/onenote/pages/{page-id}/content
可以像这样请求每个页面内容集合(通过 contentUrl
属性 of Page
resource):
var result = await graphClient.Me.Onenote.Pages.Request().GetAsync();
foreach (var page in result)
{
//download Page content
var message = new HttpRequestMessage(HttpMethod.Get, page.ContentUrl);
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);
var response = await graphClient.HttpProvider.SendAsync(message);
var content = await response.Content.ReadAsStringAsync(); //get content as HTML
}
事实证明,SDK 支持直接获取单个页面的内容,但这样做的语法不是很容易发现。它是:
Stream pageContent = await _graphClient.Me.Onenote.Pages[page.Id]
.Content // This could be omitted to retrieve every property on the page, presumably
.Request()
.GetAsync();
原来 _graphClient.Me.Onenote.Pages
返回的 IOnenotePagesCollectionRequestBuilder
支持 key-style 检索特定页面的索引。使用默认的 intellisense 下拉菜单完全找不到 =/
我正在换掉我对旧 OneDrive SDK 的使用,以编程方式在 UWP 应用程序中访问 OneNote 的内容,并且我已经开始使用 Microsoft Graph for .NET SDK。我需要做的一件事是获取特定页面的内容。目前,我正在尝试这样做:
await _graphClient.Me.Onenote.Pages
.Request()
.Filter("tolower(title) eq 'shopping list'")
.GetAsync();
...这有效,并为我提供了笔记本中标题为 "shopping list" 的所有页面。但是,所有这些页面都有 null
Content
属性,让我无法获取这些页面的 HTML 内容。我可以验证这些页面中至少有一个确实在 OneNote 应用程序中包含内容。
我已经通读了 SDK 的文档,看来我应该得到一个 Stream
的回复,而无需任何进一步的操作。我是否遗漏了一个步骤,或者我是否错误地使用了 API?
可以按单个页面请求页面内容,例如:
GET https://graph.microsoft.com/v1.0/me/onenote/pages/{page-id}/content
可以像这样请求每个页面内容集合(通过 contentUrl
属性 of Page
resource):
var result = await graphClient.Me.Onenote.Pages.Request().GetAsync();
foreach (var page in result)
{
//download Page content
var message = new HttpRequestMessage(HttpMethod.Get, page.ContentUrl);
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);
var response = await graphClient.HttpProvider.SendAsync(message);
var content = await response.Content.ReadAsStringAsync(); //get content as HTML
}
事实证明,SDK 支持直接获取单个页面的内容,但这样做的语法不是很容易发现。它是:
Stream pageContent = await _graphClient.Me.Onenote.Pages[page.Id]
.Content // This could be omitted to retrieve every property on the page, presumably
.Request()
.GetAsync();
原来 _graphClient.Me.Onenote.Pages
返回的 IOnenotePagesCollectionRequestBuilder
支持 key-style 检索特定页面的索引。使用默认的 intellisense 下拉菜单完全找不到 =/