如何解决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);
};
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。