Inviare richieste batch

Ogni connessione HTTP effettuata dall'applicazione comporta un certo overhead. Questa libreria supporta i processi batch, per consentire alla tua applicazione di inserire diverse chiamate API in un'unica richiesta HTTP. Esempi di situazioni in cui è possibile utilizzare la gestione in batch:

  • Devi effettuare molte richieste di piccole dimensioni e vorresti ridurre al minimo l'overhead delle richieste HTTP.
  • Un utente ha apportato modifiche ai dati mentre la tua applicazione era offline quindi l'applicazione deve sincronizzare i dati locali con il server inviando molti aggiornamenti ed eliminazioni.

Nota: non puoi superare le 1000 chiamate per una singola richiesta batch. Se devi effettuare un numero maggiore di chiamate, utilizza più richieste batch.

Nota: non puoi utilizzare una proprietà caricamento di contenuti multimediali in una richiesta batch.

Dettagli

Puoi creare richieste batch creando un'istanza BatchRequest e quindi chiamando il metodo Queue per ogni richiesta da eseguire. A ogni richiesta, inoltra un callback per farti chiamare quando la tua applicazione riceve la risposta a tale richiesta. Gli argomenti della funzione di callback sono:

contenuti
La risposta dei contenuti o null se la richiesta non è andata a buon fine.
errore
L'errore o null se la richiesta è andata a buon fine.
indice
L'indice della singola richiesta.
messaggio
Il messaggio HTTP completo, che include tutte le intestazioni e i contenuti.
di Gemini Advanced.
. Dopo aver aggiunto le richieste, chiami il metodo ExecuteAsync per effettuare le richieste.

Nel seguente snippet di codice due richieste API vengono raggruppate in una singola richiesta HTTP, e a ogni richiesta API viene fornito un 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();