שליחת בקשות בכמות גדולה

כל חיבור HTTP שהאפליקציה שלך מייצרת גורם לכמות מסוימת של תקורה. הספרייה הזו תומכת בקיבוץ תגים כדי לאפשר לאפליקציה להעביר מספר קריאות ל-API לבקשת HTTP אחת. דוגמאות למצבים שבהם כדאי להשתמש בקיבוץ:

  • עליך לבצע בקשות קטנות רבות, וברצונך לצמצם את תקורת בקשות ה-HTTP.
  • משתמש ביצע שינויים בנתונים בזמן שהאפליקציה הייתה במצב אופליין, ולכן האפליקציה צריכה לסנכרן את הנתונים המקומיים שלה עם השרת על ידי שליחת הרבה עדכונים ומחיקה.

הערה: אתם מוגבלים ל-1,000 שיחות בבקשה אחת באצווה. אם צריך לבצע יותר שיחות, אפשר להשתמש במספר בקשות אצווה.

הערה: לא ניתן להשתמש באובייקט העלאת מדיה בבקשות באצווה.

פרטים

אפשר ליצור בקשות אצווה על ידי יצירת אובייקט BatchRequest וקריאה ל-method Queue לכל בקשה שרוצים לבצע. בכל בקשה, מעבירים קריאה חוזרת (callback) שתתבצע קריאה כשהאפליקציה תקבל את התגובה לבקשה. הארגומנטים של פונקציית הקריאה החוזרת הם:

ביותר
תגובת התוכן, או null אם הבקשה נכשלה.
error
השגיאה, או null אם הבקשה הצליחה.
index
האינדקס של הבקשה המסוימת.
הודעה
הודעת ה-HTTP המלאה שכוללת את כל הכותרות והתוכן שלה.
לאחר הוספת הבקשות, עליך לבצע קריאה ל-method ExecuteAsync כדי לבצע את הבקשות.

בקטע הקוד הבא, שתי בקשות API מקובצות בבקשת HTTP אחת, ולכל בקשת API מתקבל קריאה חוזרת (callback):

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();