Gửi yêu cầu hàng loạt

Mỗi kết nối HTTP mà ứng dụng của bạn thực hiện đều dẫn đến một mức hao tổn nhất định. Thư viện này hỗ trợ tính năng tạo lô để cho phép ứng dụng của bạn đưa nhiều lệnh gọi API vào một yêu cầu HTTP. Ví dụ về các trường hợp mà bạn có thể cần sử dụng tính năng phân lô:

  • Bạn có nhiều yêu cầu nhỏ cần thực hiện và muốn giảm thiểu mức hao tổn của yêu cầu HTTP.
  • Một người dùng đã thay đổi dữ liệu khi ứng dụng không có kết nối mạng. Vì vậy, ứng dụng cần đồng bộ hoá dữ liệu cục bộ với máy chủ bằng cách gửi nhiều nội dung cập nhật và xoá.

Lưu ý: Bạn chỉ có thể thực hiện tối đa 1.000 lệnh gọi trong một yêu cầu theo lô. Nếu bạn cần thực hiện nhiều lệnh gọi hơn con số đó, hãy sử dụng nhiều yêu cầu hàng loạt.

Lưu ý: Bạn không thể sử dụng đối tượng tải nội dung nghe nhìn lên trong một yêu cầu hàng loạt.

Thông tin chi tiết

Bạn sẽ tạo các yêu cầu hàng loạt bằng cách tạo thực thể cho một đối tượng BatchRequest, sau đó gọi phương thức Queue cho từng yêu cầu mà bạn muốn thực thi. Với mỗi yêu cầu, hãy truyền một lệnh gọi lại để gọi khi ứng dụng của bạn nhận được phản hồi cho yêu cầu đó. Các đối số của hàm gọi lại là:

kiếm nhiều tiền nhất
Phản hồi nội dung hoặc null nếu yêu cầu không thành công.
error
Lỗi, hoặc null nếu yêu cầu thành công.
index
Chỉ mục của yêu cầu riêng lẻ.
tin nhắn
Thông báo HTTP đầy đủ bao gồm tất cả tiêu đề và nội dung.
Sau khi thêm yêu cầu, bạn sẽ gọi phương thức ExecuteAsync để đưa ra yêu cầu.

Trong đoạn mã sau, 2 yêu cầu API được gộp thành một yêu cầu HTTP duy nhất và mỗi yêu cầu API được cung cấp một lệnh gọi lại:

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