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-транспорт видимым уже при создании.

Похожие статьи