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 رفتار وابسته به پلتفرم دارد و تضمین نمی‌کند که مقدار HTTP_PROXY در Docker مسیر این کلاینت شود. کارخانه صریح بالا انتقال REST انتخاب‌شده را هنگام ساخت قابل مشاهده می‌کند.

مقالات مرتبط