Подключение фабрики прокси-транспорта к REST-клиенту BigQuery Java
Используйте HttpTransportOptions в существующей конфигурации проекта и учётных данных, с отдельной настройкой транспорта, если сами учётные данные выполняют запросы токенов.
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-транспорт видимым уже при создании.