IBM Java SDK:为 IAM 与服务调用配置代理
在 IAM 认证器与服务开始发起请求之前,分别为其设置代理和 HttpConfigOptions。
在初始化阶段同时设置这两条链路,并使用实际提供给该服务的 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 是应用已有的对象。请在获取 token 或开始服务请求之前应用这些设置,并保持正常的证书校验开启。如果应用对这两个目标都可以使用公共 HTTP 端点,可在HTTP 代理列表中查找候选地址。
这两处赋值覆盖的是不同的请求。authenticator.setProxy 覆盖 IAM token 链路;service.configureClient 把代理应用到服务传输层。只配置其中一个,并不会为另一个建立路由。
遇到失败时,先确认失败请求中指定的主机。token 获取成功只能把问题缩小到服务链路上;它并不能证明该链路已经收到了代理配置。
HttpConfigOptions 来自 IBM Java SDK Core。在改写旧的 ConversationService 示例时,应使用应用所选的 Core 包与服务生成版本,而不要照抄旧的服务专用网络类。