Java API列出数据流作业

问题描述

我正在尝试编写Java代码以列出数据流作业。 我已从https://cloud.google.com/dataflow/docs/reference/rest/v1b3/projects.jobs/list获得参考 但是不推荐使用“ GoogleCredential”类。我尝试将r = requests_session.get(jsonAdress) objects = ijson.items(r.content,'result.item') for obj in objects: print(obj["totalPages"]) 替换为GoogleCredential,但在下面的这一行

GoogleCredentials

它期望使用HttpRequestinitializer而不是凭据。

有人可以帮助我如何使用证书本身并解决此问题吗?

解决方法

需要

HttpRequestInitializer才能在失败时执行自动重试。可以使用HttpRequestInitializer来构造一个简单的com.google.api.client.auth.oauth2.Credential,如下所示:

private HttpRequestInitializer buildInitializer(Credential credential) {
    return httpRequest -> {
      // handles abnormal HTTP responses (non 2XX responses)
      final HttpUnsuccessfulResponseHandler unsuccessfulResponseHandler =
          new HttpBackOffUnsuccessfulResponseHandler(new ExponentialBackOff())
              .setSleeper(Sleeper.DEFAULT);
      /*
      this is designed to work with only one HttpRequest at a time.
      Hence,a new instance of HttpBackOffIOExceptionHandler with new instance of
      BackOff is created for each instance of HttpRequest
      */
      HttpBackOffIOExceptionHandler httpBackOffIOExceptionHandler =
          new HttpBackOffIOExceptionHandler(new ExponentialBackOff()).setSleeper(Sleeper.DEFAULT);
      httpRequest.setInterceptor(credential).setUnsuccessfulResponseHandler(unsuccessfulResponseHandler)
          .setIOExceptionHandler(httpBackOffIOExceptionHandler)
          .setConnectTimeout((int) TimeUnit.MINUTES.toMillis(3))
          .setReadTimeout((int) TimeUnit.MINUTES.toMillis(3))
          .setThrowExceptionOnExecuteError(false).setSuppressUserAgentSuffix(true);

    };
  }