![](/img/trans.png)
[英]Microsoft Graph C# SDK - How to return a Stream for 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();
...有效,并让我获得笔记本中所有带有“购物清单”标题的页面。 但是,所有这些页面都具有null
Content
属性,这使我无法获取那些页面的HTML内容。 我可以验证这些页面中至少有一个确实在OneNote应用程序中具有内容。
我已经阅读了SDK的文档,看来我应该只需要重新获得Stream
而无需采取任何进一步的措施。 我缺少步骤吗,还是我使用API的方式不正确?
可以按单个页面请求页面内容,例如:
GET https://graph.microsoft.com/v1.0/me/onenote/pages/{page-id}/content
每个页面集合的内容可以这样请求(通过Page
resource的 contentUrl
属性):
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支持直接获取单个页面的Content,但是这样做的语法不是很容易发现。 它是:
Stream pageContent = await _graphClient.Me.Onenote.Pages[page.Id]
.Content // This could be omitted to retrieve every property on the page, presumably
.Request()
.GetAsync();
事实证明IOnenotePagesCollectionRequestBuilder
返回的_graphClient.Me.Onenote.Pages
支持键样式索引来检索特定页面。 使用默认的Intellisense下拉列表完全找不到= /
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.