Задайте оба маршрута при инициализации, используя тот аутентификатор IAM, который действительно передан службе:

import java.net.InetSocketAddress;
import java.net.Proxy;
import com.ibm.cloud.sdk.core.http.HttpConfigOptions;

var proxy = new Proxy(
    Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example.net", 8080));

authenticator.setProxy(proxy);

var options = new HttpConfigOptions.Builder()
    .proxy(proxy)
    .build();
service.configureClient(options);

Здесь authenticator и service — существующие объекты приложения. Примените настройки до начала получения токена или запросов к службе, при включённой обычной проверке сертификатов. Если приложение может использовать публичную конечную точку HTTP для обоих назначений, подходящие адреса есть в списке HTTP-прокси.

Два назначения охватывают разные запросы. authenticator.setProxy охватывает путь токена IAM; service.configureClient применяет прокси к транспорту службы. Настройка одного не создаёт маршрут другого.

При сбое определите хост, указанный в неудачном запросе. Успешное получение токена сужает проблему до пути службы; но не доказывает, что этот путь получил свои параметры прокси.

HttpConfigOptions происходит из IBM Java SDK Core. Адаптируя старый пример ConversationService, используйте пакет Core и поколение службы, выбранные приложением, а не копируйте старый сетевой класс, специфичный для службы.

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