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();

Użyj tej instancji bigQuery do operacji REST. projectId i credentials pochodzą z istniejącej konfiguracji aplikacji.

Fabryka tworzy transport HTTP, który dociera do API BigQuery przez pośrednika. Punkt końcowy API pozostaje miejscem docelowym; zastąpienie go adresem proxy oznacza żądanie innej usługi. Dla dozwolonej trasy przez publiczne proxy do BigQuery lista proxy HTTP dostarcza kandydatów dla pól InetSocketAddress.

Uzyskiwanie lub odświeżanie danych uwierzytelniających może mieć własny transport HTTP, więc skonfiguruj to obsługiwane wejście, gdy jego żądania wymagają proxy. Te opcje REST nie konfigurują również niezależnego kanału gRPC.

Do wykrywania systemowego java.net.useSystemProxies ma zachowanie zależne od platformy i nie gwarantuje, że wartość Docker HTTP_PROXY stanie się trasą tego klienta. Powyższa jawna fabryka czyni wybrany transport REST widocznym już przy tworzeniu.

Powiązane artykuły