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

Folosiți această instanță bigQuery pentru operațiile REST. projectId și credentials provin din configurația existentă a aplicației.

Fabrica creează transportul HTTP care ajunge la API-ul BigQuery prin intermediar. Punctul final al API-ului rămâne destinația; înlocuirea lui cu adresa proxy cere un alt serviciu. Pentru o rută de proxy public permisă către BigQuery, lista de proxy-uri HTTP oferă candidați pentru câmpurile InetSocketAddress.

Obținerea sau reînnoirea acreditărilor poate avea propriul transport HTTP, așa că configurați acea intrare acceptată atunci când cererile ei au nevoie de proxy. Aceste opțiuni REST nu configurează nici un canal gRPC independent.

Pentru descoperirea sistemului, java.net.useSystemProxies are un comportament specific platformei și nu garantează că o valoare Docker HTTP_PROXY devine ruta acestui client. Fabrica explicită de mai sus face transportul REST ales vizibil încă de la construire.

Articole similare