Koppla en proxytransportfabrik till BigQuery Javas REST-klient
Använd HttpTransportOptions på den befintliga projekt- och autentiseringskonfigurationen, med separat transportinställning om själva autentiseringsuppgifterna gör tokenförfrågningar.
import java.net.InetSocketAddress;
import java.net.Proxy;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.cloud.http.HttpTransportOptions;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
var proxy = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress("proxy.example", 8080));
var httpOptions = HttpTransportOptions.newBuilder()
.setHttpTransportFactory(() ->
new NetHttpTransport.Builder().setProxy(proxy).build())
.build();
BigQuery bigQuery = BigQueryOptions.newBuilder()
.setProjectId(projectId)
.setCredentials(credentials)
.setTransportOptions(httpOptions)
.build()
.getService();Använd denna bigQuery-instans för REST-åtgärderna. projectId och credentials kommer från applikationens befintliga konfiguration.
Fabriken skapar den HTTP-transport som når BigQuery API via mellanledet. API-slutpunkten förblir målet; att ersätta den med proxyadressen begär en annan tjänst. För en tillåten offentlig proxyväg till BigQuery tillhandahåller HTTP-proxylistan kandidater för InetSocketAddress-fälten.
Hämtning eller förnyelse av autentiseringsuppgifter kan ha en egen HTTP-transport, så konfigurera den indata som stöds när dess förfrågningar behöver proxyn. Dessa REST-alternativ konfigurerar inte heller någon oberoende gRPC-kanal.
För systemupptäckt har java.net.useSystemProxies plattformsspecifikt beteende och garanterar inte att ett Docker HTTP_PROXY-värde blir denna klients väg. Den uttryckliga fabriken ovan gör den valda REST-transporten synlig redan vid byggandet.