全部產品
Search
文件中心

Alibaba Cloud SDK:代理配置

更新時間:Oct 16, 2025

在軟體開發中,代理就像是一個“中間人”,它幫我們控制對某個功能或資源的訪問。使用代理可以實現許可權檢查、記錄動作記錄、快取資料、消極式載入等功能,而不用改動原來的代碼。這樣可以讓程式更安全、運行更快,也更容易維護和擴充。本文將為您介紹Java(非同步)SDK中如何配置代理。

代理類型

Java(非同步)SDK 使用com.aliyun.core.http.ProxyOptions類來配置代理類型,支援以下兩種常見的代理類型:

類型

描述

ProxyOptions.Type.HTTP

HTTP代理,適用於大多數Web網路環境。

ProxyOptions.Type.SOCKS5

SOCKS5代理,適用於複雜網路拓撲情境。

代理配置

1. 建立Proxy 位址對象

建立一個表示Proxy 伺服器地址的InetSocketAddress對象:

java.net.InetSocketAddress inetSocketAddress = new java.net.InetSocketAddress("<YOUR-PROXY-HOSTNAME>", <連接埠號碼>);

請將 <YOUR-PROXY-HOSTNAME>替換為實際的Proxy 伺服器主機名稱或 IP 位址,<連接埠號碼>替換為實際的連接埠號碼。

2. 配置ProxyOptions

根據代理類型,建立相應的ProxyOptions執行個體:

// 樣本:配置HTTP代理
com.aliyun.core.http.ProxyOptions proxyOptions = new com.aliyun.core.http.ProxyOptions(
    com.aliyun.core.http.ProxyOptions.Type.HTTP, 
    inetSocketAddress
);

// 如果代理需要認證,請設定使用者名稱和密碼
proxyOptions.setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>");

3. 應用代理配置

代理配置完成後,在非同步用戶端中應用代理配置:

com.aliyun.core.http.HttpClient httpClient = new com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder()
        // 配置代理
        .proxy(proxyOptions)
        .build();
        
AsyncClient client = AsyncClient.builder()
        .credentialsProvider(credentialProvider)
        .httpClient(httpClient)
        .overrideConfiguration(
                ClientOverrideConfiguration.create()
                        .setEndpointOverride("<ENDPOINT>")
                        .setProtocol("https") // 通過HTTP代理時,Protocol值為http;其他代理建議使用https。
        )
        .build();   

完整範例程式碼如下:

// 配置代理IP及連接埠
java.net.InetSocketAddress inetSocketAddress = new java.net.InetSocketAddress("<YOUR-PROXY-HOSTNAME>", <連接埠號碼>);
com.aliyun.core.http.ProxyOptions proxyOptions = new com.aliyun.core.http.ProxyOptions(com.aliyun.core.http.ProxyOptions.Type.HTTP, inetSocketAddress);
// 當代理需要認證訪問時,需設定代理的使用者名稱和密碼
proxyOptions.setCredentials("<YOUR-PROXY-USERNAME>", "<YOUR-PROXY-PASSWORD>");

com.aliyun.core.http.HttpClient httpClient = new com.aliyun.httpcomponent.httpclient.ApacheAsyncHttpClientBuilder()
        // 配置代理
        .proxy(proxyOptions)
        .build();

AsyncClient client = AsyncClient.builder()
        .credentialsProvider(credentialProvider) // 此處省略credentialProvider實現過程
        .httpClient(httpClient)
        .overrideConfiguration(
                ClientOverrideConfiguration.create()
                        .setEndpointOverride("<ENDPOINT>")
                        .setProtocol("https") // 建議使用https;當使用HTTP代理http請求時,則設為http
        )
        .build();

相關文檔

HTTP代理配置實踐