Как получить содержимое страницы OneNote с помощью Microsoft Graph .NET SDK? - PullRequest
0 голосов
/ 11 мая 2019

Я заменяю использование старого OneDrive SDK для программного доступа к содержимому OneNote в приложении UWP, и я начал использовать Microsoft Graph для .NET SDK. Одна из вещей, которые мне нужно сделать, это получить контент конкретной страницы. В настоящее время я пытаюсь сделать это так:

await _graphClient.Me.Onenote.Pages
    .Request()
    .Filter("tolower(title) eq 'shopping list'")                    
    .GetAsync();

... который работает, и получает все страницы в моей записной книжке с заголовком «Список покупок». Однако все эти страницы имеют свойство null Content, поэтому я не могу получить HTML-содержимое этих страниц. Я могу убедиться, что хотя бы на одной из этих страниц действительно есть содержимое в приложении OneNote.

Я прочитал документацию для SDK, и кажется, что я должен просто получить Stream без каких-либо дальнейших действий. Есть ли какой-то шаг, который мне не хватает, или я неправильно использую API?

Ответы [ 2 ]

2 голосов
/ 12 мая 2019

Содержание страницы может запрашиваться на одной странице, например:

GET https://graph.microsoft.com/v1.0/me/onenote/pages/{page-id}/content

Для каждой коллекции страниц можно запросить содержимое следующим образом (через contentUrl свойство Page ресурс ):

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 

}
1 голос
/ 17 мая 2019

Оказывается, что 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();

Оказывается, IOnenotePagesCollectionRequestBuilder, возвращаемый _graphClient.Me.Onenote.Pages, поддерживает индексацию в стиле клавиш для извлечения определенной страницы. Абсолютно невозможно найти с помощью раскрывающегося списка по умолчанию intellisense = /

...