Configure a proxy

Google Cloud client libraries use HTTPS and gRPC in underlying communication with the services. In both protocols, you can configure a proxy using https.proxyHost and, optionally, https.proxyPort properties.

Configure a proxy with HTTP

For HTTP clients, you can configure a basic proxy by using http.proxyHost and related system properties, as documented by Java Networking and Proxies .

For a custom proxy (for example, an authenticated proxy), provide a custom HttpTransportFactory to GoogleCredentials :

  import 
  
 com.google.api.client.http. HttpTransport 
 
 ; 
 import 
  
 com.google.api.client.http.apache.v2. ApacheHttpTransport 
 
 ; 
 import 
  
 com.google.auth.http. HttpTransportFactory 
 
 ; 
 import 
  
 com.google.auth.oauth2. GoogleCredentials 
 
 ; 
 import 
  
 org.apache.http.HttpHost 
 ; 
 import 
  
 org.apache.http.auth.AuthScope 
 ; 
 import 
  
 org.apache.http.auth.UsernamePasswordCredentials 
 ; 
 import 
  
 org.apache.http.client.CredentialsProvider 
 ; 
 import 
  
 org.apache.http.client.HttpClient 
 ; 
 import 
  
 org.apache.http.conn.routing.HttpRoutePlanner 
 ; 
 import 
  
 org.apache.http.impl.client.BasicCredentialsProvider 
 ; 
 import 
  
 org.apache.http.impl.client.ProxyAuthenticationStrategy 
 ; 
 import 
  
 org.apache.http.impl.conn.DefaultProxyRoutePlanner 
 ; 
 import 
  
 java.io.IOException 
 ; 
 public 
  
 class 
 ProxyExample 
  
 { 
  
 public 
  
  GoogleCredentials 
 
  
 getCredentials 
 () 
  
 throws 
  
 IOException 
  
 { 
  
  HttpTransportFactory 
 
  
 httpTransportFactory 
  
 = 
  
 getHttpTransportFactory 
 ( 
  
 "some-host" 
 , 
  
 8080 
 , 
  
 "some-username" 
 , 
  
 "some-password" 
  
 ); 
  
 return 
  
  GoogleCredentials 
 
 . 
  getApplicationDefault 
 
 ( 
 httpTransportFactory 
 ); 
  
 } 
  
 public 
  
  HttpTransportFactory 
 
  
 getHttpTransportFactory 
 ( 
 String 
  
 proxyHost 
 , 
  
 int 
  
 proxyPort 
 , 
  
 String 
  
 proxyUsername 
 , 
  
 String 
  
 proxyPassword 
 ) 
  
 { 
  
 HttpHost 
  
 proxyHostDetails 
  
 = 
  
 new 
  
 HttpHost 
 ( 
 proxyHost 
 , 
  
 proxyPort 
 ); 
  
 HttpRoutePlanner 
  
 httpRoutePlanner 
  
 = 
  
 new 
  
 DefaultProxyRoutePlanner 
 ( 
 proxyHostDetails 
 ); 
  
 CredentialsProvider 
  
 credentialsProvider 
  
 = 
  
 new 
  
 BasicCredentialsProvider 
 (); 
  
 credentialsProvider 
 . 
 setCredentials 
 ( 
  
 new 
  
 AuthScope 
 ( 
 proxyHostDetails 
 . 
 getHostName 
 (), 
  
 proxyHostDetails 
 . 
  getPort 
 
 ()), 
  
 new 
  
 UsernamePasswordCredentials 
 ( 
 proxyUsername 
 , 
  
 proxyPassword 
 ) 
  
 ); 
  
 HttpClient 
  
 httpClient 
  
 = 
  
  ApacheHttpTransport 
 
 . 
 newDefaultHttpClientBuilder 
 () 
  
 . 
 setRoutePlanner 
 ( 
 httpRoutePlanner 
 ) 
  
 . 
 setProxyAuthenticationStrategy 
 ( 
 ProxyAuthenticationStrategy 
 . 
 INSTANCE 
 ) 
  
 . 
 setDefaultCredentialsProvider 
 ( 
 credentialsProvider 
 ) 
  
 . 
 build 
 (); 
  
 final 
  
  HttpTransport 
 
  
 httpTransport 
  
 = 
  
 new 
  
  ApacheHttpTransport 
 
 ( 
 httpClient 
 ); 
  
 return 
  
 new 
  
  HttpTransportFactory 
 
 () 
  
 { 
  
 @Override 
  
 public 
  
  HttpTransport 
 
  
 create 
 () 
  
 { 
  
 return 
  
 httpTransport 
 ; 
  
 } 
  
 }; 
  
 } 
 } 
 

The preceding example requires com.google.http-client:google-http-client-apache-v2 .

Configure a proxy with a gRPC custom proxy configuration

For a custom proxy with gRPC, supply a ProxyDetector to the ManagedChannelBuilder :

Replace PROXY_USERNAME , PROXY_PASSWORD , PROXY_HOST , and PROXY_PORT with the credentials and address of your proxy.

  import 
  
 com.google.api.core. ApiFunction 
 
 ; 
 import 
  
 com.google.api.gax.rpc. TransportChannelProvider 
 
 ; 
 import 
  
 com.google.cloud.tasks.v2. CloudTasksClient 
 
 ; 
 import 
  
 com.google.cloud.tasks.v2. CloudTasksSettings 
 
 ; 
 import 
  
 com.google.cloud.tasks.v2.stub.CloudTasksStubSettings 
 ; 
 import 
  
 io.grpc.HttpConnectProxiedSocketAddress 
 ; 
 import 
  
 io.grpc.ManagedChannelBuilder 
 ; 
 import 
  
 io.grpc.ProxiedSocketAddress 
 ; 
 import 
  
 io.grpc.ProxyDetector 
 ; 
 import 
  
 javax.annotation.Nullable 
 ; 
 import 
  
 java.io.IOException 
 ; 
 import 
  
 java.net.InetSocketAddress 
 ; 
 import 
  
 java.net.SocketAddress 
 ; 
 public 
  
  CloudTasksClient 
 
  
 getService 
 () 
  
 throws 
  
 IOException 
  
 { 
  
  TransportChannelProvider 
 
  
 transportChannelProvider 
  
 = 
  
 CloudTasksStubSettings 
 . 
  defaultGrpcTransportProviderBuilder 
 
 () 
  
 . 
 setChannelConfigurator 
 ( 
  
 new 
  
 ApiFunction<ManagedChannelBuilder 
 , 
  
 ManagedChannelBuilder 
> () 
  
 { 
  
 @Override 
  
 public 
  
 ManagedChannelBuilder 
  
 apply 
 ( 
 ManagedChannelBuilder 
  
 managedChannelBuilder 
 ) 
  
 { 
  
 return 
  
 managedChannelBuilder 
 . 
 proxyDetector 
 ( 
  
 new 
  
 ProxyDetector 
 () 
  
 { 
  
 @Nullable 
  
 @Override 
  
 public 
  
 ProxiedSocketAddress 
  
 proxyFor 
 ( 
 SocketAddress 
  
 socketAddress 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
 return 
  
 HttpConnectProxiedSocketAddress 
 . 
 newBuilder 
 () 
  
 . 
 setUsername 
 ( 
 PROXY_USERNAME 
 ) 
  
 . 
 setPassword 
 ( 
 PROXY_PASSWORD 
 ) 
  
 . 
 setProxyAddress 
 ( 
 new 
  
 InetSocketAddress 
 ( 
 PROXY_HOST 
 , 
  
 PROXY_PORT 
 )) 
  
 . 
 setTargetAddress 
 (( 
 InetSocketAddress 
 ) 
  
 socketAddress 
 ) 
  
 . 
 build 
 (); 
  
 } 
  
 }); 
  
 } 
  
 }) 
  
 . 
 build 
 (); 
  
  CloudTasksSettings 
 
  
 cloudTasksSettings 
  
 = 
  
  CloudTasksSettings 
 
 . 
 newBuilder 
 () 
  
 . 
 setTransportChannelProvider 
 ( 
 transportChannelProvider 
 ) 
  
 . 
 build 
 (); 
  
 return 
  
  CloudTasksClient 
 
 . 
 create 
 ( 
 cloudTasksSettings 
 ); 
 } 
 
Create a Mobile Website
View Site in Mobile | Classic
Share by: