Timeouts and Errors

  • This guide explains how to configure timeout settings for HTTP requests when using the Google API Client Library for Java, ensuring your application handles potential delays.

  • It demonstrates how to catch and manage HTTP error responses, specifically GoogleJsonResponseException, which occur when interacting with Google APIs.

  • The content provides code examples for setting connection and read timeouts and illustrates how to handle errors using try-catch blocks with GoogleJsonResponseException.

This document describes how to set timeouts and handle HTTP errors that your code might receive when you use the Google API Client Library for Java.

Contents

Setting timeouts

In the following example, which uses the Google Analytics API, the setConnectTimeout and setReadTimeout methods are used to set the connect and read timeouts to three minutes (in milliseconds) for all requests:

private HttpRequestInitializer setHttpTimeout(final HttpRequestInitializer requestInitializer) {
  return new HttpRequestInitializer() {
    @Override
    public void initialize(HttpRequest httpRequest) throws IOException {
      requestInitializer.initialize(httpRequest);
      httpRequest.setConnectTimeout(3 * 60000);  // 3 minutes connect timeout
      httpRequest.setReadTimeout(3 * 60000);  // 3 minutes read timeout
    }
  };

GoogleCredential credential = ....

final Analytics analytics = Analytics.builder(new NetHttpTransport(), jsonFactory, setHttpTimeout(credential)).build();

Handling HTTP error responses from Google APIs

When an error status code is detected in an HTTP response to a Google API that uses the JSON format, the generated libraries throw a GoogleJsonResponseException.

The errors use the format specified in Error responses.

The following example shows one way that you can handle these exceptions:

Drive.Files.List listFiles = drive.files.list();
try {
  FileList response = listFiles.execute();
  ...
} catch (GoogleJsonResponseException e) {
  System.err.println(e.getDetails());
}