Как добавить или обновить несколько событий в календаре с помощью C# Microsoft.Graph SDK? - PullRequest
0 голосов
/ 30 марта 2020

Учитывая ответ на пакетирование, данный в этом вопросе StackOverflow на Можно ли добавить несколько событий в календарь?

Не ясно, как использовать C# SDK для передачи параметров в запросы. Примеры, которые я вижу, касаются извлечения данных через пакет, но я не вижу четкого способа передачи параметров.

Мой предыдущий код (до исправления), я бы просто вызвал AddAsyn c или UpdateAsyn c для метода Request (). Но с пакетом у меня не может быть тех методов добавления / обновления. Вот мой код:

await _graphClient.Me.Calendars[_calendarID].Events
        .Request()
        .AddAsync(@event);

Но я не понимаю, зачем добавлять обновленный объект события в календарь. Как правильно передать параметр?

var batch = new BatchRequestContent();

// The response given is a GET METHOD
var request = _graphClient.Me.Calendars[_calendarID].Events
                .Request()
                .GetHttpRequestMessage();

// UPDATE the request to POST along with data in content 
// (Am I wrong here in doing it this way?)
request.Method = HttpMethod.Post;
request.Content = new StringContent(JsonConvert.SerializeObject(@event));

batch.AddBatchRequestStep(request);

var response = await _graphClient.Batch.Request().PostAsync(batch);

Приведенный выше код также не похож на JSON, который передается в свойство request.Content. Пожалуйста, дайте мне знать, как правильно предоставить данные для запроса, и если я совершенно не прав при написании сообщения. Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

ОК, решил! Понял, что мне пришлось изменить HttpMethod на Patch, но перечисления не было, вместо этого вам пришлось явно установить его в виде строки.

var batch = new BatchRequestContent();
var serializer = new Microsoft.Graph.Serializer();

Код для ДОБАВИТЬ Событие через пакет:

var request = this.GraphClient.Me.Calendars[_calendarID].Events
        .Request()
        .GetHttpRequestMessage();

request.Method = HttpMethod.Post;
request.Content = serializer.SerializeAsJsonContent(outlookEvent);
batch.AddBatchRequestStep(request);

Код для ОБНОВЛЕНИЕ Событие через пакет:

        var request = this.GraphClient.Me.Calendars[_calendarID].Events[outlookEvent.Id]
            .Request()
            .GetHttpRequestMessage();
request.Method = new HttpMethod("PATCH");
request.Content = serializer.SerializeAsJsonContent(outlookEvent);
batch.AddBatchRequestStep(request);

После того, как вы добавили все свои добавления и обновления, вы можете просто позвонить

await this.GraphClient.Batch.Request().PostAsync(batch);
0 голосов
/ 30 марта 2020

В основном вы находитесь на правильном пути.

Вместо использования прямого JsonConvert.SerializeObject, вы должны создать экземпляр класса Microsoft.Graph.Serializer и использовать его для сериализации. Он настроен на создание JSON объектов, совместимых с Microsoft Graph.

...