Eine Proxy-Transport-Factory an den REST-Client von BigQuery Java anhängen
Verwenden Sie HttpTransportOptions auf der bestehenden Projekt- und Anmeldedatenkonfiguration, mit separater Transporteinrichtung, wenn die Anmeldedaten selbst Token-Anfragen stellen.
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();Verwenden Sie diese bigQuery-Instanz für die REST-Vorgänge. projectId und credentials stammen aus der bestehenden Konfiguration der Anwendung.
Die Factory erstellt den HTTP-Transport, der die BigQuery-API über den Vermittler erreicht. Der API-Endpunkt bleibt das Ziel; ihn durch die Proxy-Adresse zu ersetzen, verlangt einen anderen Dienst. Für eine zulässige öffentliche Proxy-Route zu BigQuery liefert die HTTP-Proxy-Liste Kandidaten für die InetSocketAddress-Felder.
Der Bezug oder die Erneuerung von Anmeldedaten kann einen eigenen HTTP-Transport haben; konfigurieren Sie diese unterstützte Eingabe, wenn ihre Anfragen den Proxy benötigen. Diese REST-Optionen konfigurieren außerdem keinen unabhängigen gRPC-Kanal.
Für die Systemerkennung hat java.net.useSystemProxies plattformspezifisches Verhalten und garantiert nicht, dass ein Docker-HTTP_PROXY-Wert zur Route dieses Clients wird. Die explizite Factory oben macht den gewählten REST-Transport schon beim Aufbau sichtbar.