繁体   English   中英

如何使用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();

...有效,并让我获得笔记本中所有带有“购物清单”标题的页面。 但是,所有这些页面都具有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM