ارسال درخواست‌های دسته‌ای

هر اتصال HTTP که برنامه شما برقرار می‌کند منجر به مقدار مشخصی سربار می‌شود. این کتابخانه از دسته‌بندی پشتیبانی می‌کند، تا به برنامه شما اجازه دهد چندین فراخوانی میانای برنامه‌سازی کاربردی را در یک درخواست HTTP قرار دهد. نمونه‌هایی از موقعیت‌هایی که ممکن است بخواهید از دسته‌بندی استفاده کنید:

  • درخواست‌های کوچک زیادی دارید و می‌خواهید سربار درخواست HTTP را به‌حداقل برسانید.
  • کاربری درحالی‌که برنامه شما آفلاین بوده است تغییراتی در داده‌ها ایجاد کرده است، بنابراین برنامه شما باید داده‌های محلی خود را با ارسال تعداد زیادی به‌روزرسانی و حذف با سرور همگام‌سازی کند.

توجه: در هر درخواست دسته‌ای، به ۱۰۰۰ تماس محدود هستید. اگر لازم است تماس‌های بیشتری برقرار کنید، از چند درخواست دسته‌ای استفاده کنید.

توجه: نمی‌توانید از شیء بارگذاری رسانه در درخواست دسته‌ای استفاده کنید.

جزئیات

درخواست‌های دسته‌ای را با نمونه‌سازی یک شیء 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();