Giải pháp thay thế HttpConfigurable được trải rộng trên nhiều API. Một plugin kiểm tra cài đặt proxy HTTP cần thao tác khác với plugin gửi yêu cầu qua chúng.

Cách dùng hiện tạiAPI chuyển đổi
Đọc cấu hình proxy đã chọnProxySettings.getInstance().getProxyConfiguration()
Lấy thông tin xác thực đã biết hoặc hỏi người dùngProxyAuthentication
Lấy thông tin xác thực cho điểm cuối tĩnh đã cấu hìnhgetStaticProxyCredentials, một tiện ích mở rộng Kotlin được hiển thị cho Java qua ProxyUtils
Mở URL bằng cách chọn proxy của nền tảngHttpConnectionUtils.openConnection(location) hoặc openHttpConnection(location)

Đối với API chuyển đổi mà các nguồn IntelliJ Platform năm 2024 đại diện, những kiểu mạng này nằm trong com.intellij.util.net. Ví dụ, Kotlin có thể kiểm tra cấu hình và tra cứu thông tin xác thực proxy tĩnh đã biết mà không cần nhắc:

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
    )
)

Trình trợ giúp yêu cầu ProxyCredentialProvider; tham chiếu phương thức điều chỉnh dịch vụ xác thực cho giao diện đó. Thông tin xác thực được tra theo máy chủ và cổng của proxy đã cấu hình. Kết quả null có thể nghĩa là cấu hình không tĩnh, vì vậy nó không chứng minh rằng proxy được chọn qua PAC không cần xác thực.

Khi công việc thực sự là thực hiện yêu cầu HTTP, hãy dùng trình trợ giúp kết nối của nền tảng thay vì dựng lại định tuyến từ các trường máy chủ và cổng. Nó hỏi bộ chọn proxy của nền tảng cho URL đích. Chuyển đổi cấu hình tĩnh bằng asJavaProxy() không tôn trọng danh sách ngoại lệ của nó và không triển khai lựa chọn PAC.

Nếu cần xác thực tương tác, ProxyAuthentication.getPromptedAuthentication(prompt, host, port) là thao tác riêng biệt và có thể chặn. Hãy giữ sự khác biệt đó khi chuyển đổi mã, và kiểm tra tính khả dụng của API so với Platform SDK tối thiểu mà plugin hỗ trợ.

Bài viết liên quan