Google Cloud Storage Java:配置 HTTP 代理传输
选择 StorageOptions.http,并把传输工厂同时提供给 HTTP 服务选项和 Application Default Credentials。
var proxy = new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example.net", 8080));
com.google.auth.http.HttpTransportFactory factory = () ->
new com.google.api.client.http.javanet.NetHttpTransport.Builder()
.setProxy(proxy)
.build();
var credentials =
com.google.auth.oauth2.GoogleCredentials.getApplicationDefault(factory);
var transportOptions =
com.google.cloud.http.HttpTransportOptions.newBuilder()
.setHttpTransportFactory(factory)
.build();
var storage = com.google.cloud.storage.StorageOptions.http()
.setCredentials(credentials)
.setTransportOptions(transportOptions)
.build()
.getService();应用的常规 Application Default Credentials 设置保持不变。在允许为 Storage 和令牌端点使用公共代理的场景中,HTTP 代理列表可为 InetSocketAddress 的主机和端口提供候选。请在加载这些凭据时就提供该工厂,赶在其 HTTP 令牌请求需要它之前。
有两处输入使用该工厂:getApplicationDefault(factory) 覆盖凭据实现的 HTTP 工作;HttpTransportOptions 覆盖 Storage 的 HTTP 服务。两者互不自动配置。
StorageOptions.http 自 Java Storage 2.14.0 起可用。请区分清楚库类型:HttpTransportOptions 属于 Google Cloud Core,NetHttpTransport 属于 Google 的 HTTP 客户端库。
gRPC 专用的 Storage 客户端使用另一种传输。为此工厂定制应选择 HTTP 构建器,而不是把仅适用于 HTTP 的选项附加到 gRPC 通道上。