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

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

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

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

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

פרטים

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

תוכן
תשובת התוכן, או null אם הבקשה נכשלה.
error
השגיאה, או null אם הבקשה הצליחה.
index
האינדקס של הבקשה הבודדת.
הודעה
הודעת ה-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();