在 IntelliJ 插件中替换 HttpConfigurable
读取代理配置、获取端点凭据,并通过 IntelliJ 代理 API 打开符合平台行为的连接。
HttpConfigurable 的替代方案分布在多个 API 中。检查 HTTP 代理设置的插件所需操作,与通过代理发送请求的插件并不相同。
| 现有用法 | 迁移 API |
|---|---|
| 读取所选的代理配置 | ProxySettings.getInstance().getProxyConfiguration() |
| 获取已知凭据或询问用户 | ProxyAuthentication |
| 获取已配置的静态端点凭据 | getStaticProxyCredentials,这是通过 ProxyUtils 暴露给 Java 的 Kotlin 扩展 |
| 使用平台的代理选择打开 URL | HttpConnectionUtils.openConnection(location) 或 openHttpConnection(location) |
对于 2024 年 IntelliJ Platform 源码所代表的迁移 API,这些网络类型位于 com.intellij.util.net。例如,Kotlin 可以在不提示的情况下检查配置并查找已知的静态代理凭据:
import com.intellij.util.net.ProxyAuthentication
import com.intellij.util.net.ProxyCredentialProvider
import com.intellij.util.net.ProxySettings
import com.intellij.util.net.getStaticProxyCredentials
val settings = ProxySettings.getInstance()
val configuration = settings.getProxyConfiguration()
val credentials = settings.getStaticProxyCredentials(
ProxyCredentialProvider(
ProxyAuthentication.getInstance()::getKnownAuthentication
)
)
该辅助函数需要 ProxyCredentialProvider;方法引用把身份验证服务适配到该接口。凭据按已配置代理的主机和端口查找。null 结果可能意味着配置不是静态的,因此它不能证明通过 PAC 选择的代理不需要身份验证。
当实际任务是发送 HTTP 请求时,应使用平台的连接辅助函数,而不是从主机和端口字段重建路由。它会针对目标 URL 查询平台的代理选择器。使用 asJavaProxy() 转换静态配置不会遵循其例外列表,也不实现 PAC 选择。
如果需要交互式身份验证,ProxyAuthentication.getPromptedAuthentication(prompt, host, port) 是独立的、可能阻塞的操作。迁移代码时请保留这一区别,并对照插件支持的最低 Platform SDK 检查 API 是否可用。