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

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

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

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

توجه : شما نمی توانید از یک شیء آپلود رسانه در یک درخواست دسته ای استفاده کنید.

جزئیات

شما درخواست های دسته ای را با نمونه سازی یک شی BatchRequest و سپس فراخوانی متد Queue برای هر درخواستی که می خواهید اجرا کنید ایجاد می کنید. با هر درخواست، یک تماس پاسخ ارسال کنید تا زمانی که برنامه شما پاسخ آن درخواست را دریافت می کند، با شما تماس گرفته شود. آرگومان های تابع callback عبارتند از:

محتوا
پاسخ محتوا، یا در صورت عدم موفقیت درخواست، 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();