Отправка пакетных запросов

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Каждое HTTP-соединение, которое создает ваше приложение, приводит к определенным накладным расходам. Эта библиотека поддерживает пакетную обработку, что позволяет вашему приложению помещать несколько вызовов API в один HTTP-запрос. Примеры ситуаций, когда вы можете захотеть использовать пакетную обработку:

  • У вас есть много небольших запросов, и вы хотели бы минимизировать накладные расходы HTTP-запросов.
  • Пользователь внес изменения в данные, когда ваше приложение было в автономном режиме, поэтому вашему приложению необходимо синхронизировать свои локальные данные с сервером, отправив множество обновлений и удалений.

Примечание . В одном пакетном запросе может быть не более 1000 вызовов. Если вам нужно сделать больше звонков, используйте несколько пакетных запросов.

Примечание . Вы не можете использовать объект загрузки мультимедиа в пакетном запросе.

Подробности

Вы создаете пакетные запросы, создавая экземпляр объекта BatchRequest и затем вызывая метод Queue для каждого запроса, который хотите выполнить. С каждым запросом передайте обратный вызов, который будет вызываться, когда ваше приложение получит ответ на этот запрос. Аргументы функции обратного вызова:

содержание
Ответ содержимого или null , если запрос не выполнен.
ошибка
Ошибка или null , если запрос выполнен успешно.
индекс
Индекс отдельного запроса.
сообщение
Полное HTTP-сообщение, включающее все его заголовки и содержимое.
После добавления запросов вы вызываете метод ExecuteAsync для выполнения запросов.

В следующем фрагменте кода два запроса API объединяются в один HTTP-запрос, и каждому запросу API предоставляется обратный вызов:

UserCredential credential;
using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
{
    credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        new[] { CalendarService.Scope.Calendar },
        "user", CancellationToken.None, new FileDataStore("Calendar.Sample.Store"));
}

// Create the service.
var service = new CalendarService(new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "Google Calendar API Sample",
    });

// Create a batch request.
var request = new BatchRequest(service);
request.Queue<CalendarList>(service.CalendarList.List(),
     (content, error, i, message) =>
     {
         // Put your callback code here.
     });
request.Queue<Event>(service.Events.Insert(
     new Event
     {
         Summary = "Learn how to execute a batch request",
         Start = new EventDateTime() { DateTime = new DateTime(2014, 1, 1, 10, 0, 0) },
         End = new EventDateTime() { DateTime = new DateTime(2014, 1, 1, 12, 0, 0) }
     }, "YOUR_CALENDAR_ID_HERE"),
     (content, error, i, message) =>
     {
         // Put your callback code here.
     });
// You can add more Queue calls here.

// Execute the batch request, which includes the 2 requests above.
await request.ExecuteAsync();