Batchanfragen senden

Jede HTTP-Verbindung, die Ihre Anwendung herstellt, führt zu einem bestimmten Overhead. Diese Bibliothek unterstützt Batchanfragen, sodass Ihre Anwendung mehrere API-Aufrufe in einer einzelnen HTTP-Anfrage zusammenfassen kann. Fallbeispiele für den Einsatz von Batchanfragen:

  • Sie müssen viele kleine Anfragen stellen und möchten den Aufwand für HTTP-Anfragen minimieren.
  • Ein Nutzer hat Änderungen an Daten vorgenommen, während Ihre Anwendung offline war, sodass Ihre Anwendung die lokalen Daten mit dem Server synchronisieren und dazu viele Aktualisierungs- und Löschvorgänge senden muss.

Hinweis: Sie können in einer einzelnen Batchanfrage maximal 1.000 Aufrufe ausführen. Wenn Sie mehr Aufrufe ausführen müssen, verwenden Sie mehrere Batchanfragen.

Hinweis: Sie können für Medien-Upload -Objekt in einer Batchanfrage.

Details

Sie erstellen Batchanfragen, indem Sie ein BatchRequest-Objekt instanziieren und dann die Methode Queue für jede Anfrage aufrufen, die Sie ausführen möchten. Übergeben Sie bei jeder Anfrage einen Callback, der aufgerufen wird, wenn Ihre Anwendung um die Antwort auf diese Anfrage zu erhalten. Die Argumente der Callback-Funktion sind:

Inhalt
Die Inhaltsantwort oder null, wenn die Anfrage fehlgeschlagen ist.
Fehler
Der Fehler oder null, wenn die Anfrage erfolgreich war.
Index
Der Index der einzelnen Anfrage.
Nachricht
Die vollständige HTTP-Nachricht mit allen Headern und Inhalten.
Nachdem Sie die Anfragen hinzugefügt haben, rufen Sie die Methode ExecuteAsync, um die Anfragen zu senden.

Im folgenden Code-Snippet werden zwei API-Anfragen in einer einzigen HTTP-Anfrage zusammengefasst und jeder API-Anfrage wird ein Rückruf übergeben:

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