Batchanfragen senden

Jede HTTP-Verbindung, die Ihre Anwendung herstellt, führt zu einem bestimmten Overhead. Diese Bibliothek unterstützt Batchanfragen, damit Ihre Anwendung mehrere API-Aufrufe in einer einzigen 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. Ihre Anwendung muss also ihre lokalen Daten mit dem Server mit vielen Updates und Löschungen.

Hinweis: Eine Batchanfrage ist auf 1.000 Aufrufe beschränkt. 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 eine BatchRequest -Objekt und rufen Sie dann für jede auszuführende Anfrage die Methode Queue auf. Ü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 ein Callback bereitgestellt wird:

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