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

Використовуйте цей екземпляр bigQuery для операцій REST. projectId і credentials беруться з наявної конфігурації застосунку.

Фабрика створює HTTP-транспорт, який досягає API BigQuery через посередника. Кінцева точка API залишається пунктом призначення; її заміна адресою проксі означає запит іншої служби. Для дозволеного маршруту через публічний проксі до BigQuery список HTTP-проксі надає кандидатів для полів InetSocketAddress.

Отримання або оновлення облікових даних може мати власний HTTP-транспорт, тому налаштуйте цей підтримуваний ввід, коли його запитам потрібен проксі. Ці параметри REST також не налаштовують незалежний канал gRPC.

Для виявлення системи java.net.useSystemProxies має поведінку, залежну від платформи, і не гарантує, що значення Docker HTTP_PROXY стане маршрутом цього клієнта. Явна фабрика вище робить вибраний REST-транспорт видимим уже під час створення.

Схожі статті