首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 應用程式透過 Proxy 存取網際網路 Web 伺服器的完整指南

     編輯:Java 相關知識

在企業網路環境中,為了保護內部資安,通常會斷絕內部網路與網際網路的直接連線,並透過 Proxy Server(代理伺服器) 作為中介,管控內部用戶對外部資源的存取。Java 應用程式若要在這樣的環境下正常運作,必須具備透過 Proxy 連線的能力。幸運的是,Java 只需設定幾個系統屬性,即可輕鬆支援 Proxy,無需任何安全性「漏洞」或複雜的底層操作。

核心原理:啟用系統屬性

Java 執行期提供了一組未正式文件化、但在開發者社群廣為流傳的系統屬性,用於控制 Proxy 行為。在建立任何網路連線之前,必須先在程式碼中設定以下屬性:

System.getProperties().put("proxySet", "true");
System.getProperties().put("proxyHost", "myProxyMachineName");
System.getProperties().put("proxyPort", "85");
  • proxySet=true:告知 Java 運行環境將透過 Proxy 連線。
  • proxyHost:指定 Proxy 伺服器的主機名稱或 IP 位址。
  • proxyPort:指定 Proxy 伺服器監聽的連接埠號碼。

處理 Proxy 認證

部分 Proxy 伺服器要求使用者提供帳號密碼才能通過驗證。Java 透過調整 HTTP Request Header 中的 Proxy-Authorization 欄位來傳遞憑證。憑證格式為 username:password,並需經過 Base64 編碼。

URL url = new URL("https://example.com");
URLConnection connection = url.openConnection();
String password = "username:password";
String encodedPassword = Base64.getEncoder().encodeToString(password.getBytes()); // Java 8+ 內建 Base64
connection.setRequestProperty("Proxy-Authorization", "Basic " + encodedPassword);

注意:早期版本常使用 sun.misc.BASE64Encoder,但此類屬於內部 API,不建議在生產環境使用。現代 Java 應優先使用 java.util.Base64。

其他協定的 Proxy 設定

FTP Proxy

若需透過 Proxy 進行 FTP 傳輸,需設定對應的 FTP 系統屬性:

System.getProperties().put("ftpProxySet", "true");
System.getProperties().put("ftpProxyHost", "proxy-host-name");
System.getProperties().put("ftpProxyPort", "21");

設定完成後,即可直接使用 ftp:// 協定的 URL 進行操作。

SOCKS4 Proxy

支援 SOCKS4 協定的 Proxy 設定方式如下:

System.getProperties().put("socksProxySet", "true");
System.getProperties().put("socksProxyHost", "proxyHostName");
System.getProperties().put("socksProxyPort", "1080"); // SOCKS4 預設連接埠

常見問題與版本差異

  • JDK 1.1.x 環境(如 WebSphere 3.0):單純設定 proxyHost/proxyPort 可能失效,需改用 new URL(String protocol, String host, int port, String file) 建構子,直接指定 Proxy 主機與連接埠。
  • 認證 Header 格式:務必在 Base64 編碼字串前加上 Basic (含空白),否則伺服器會拒絕驗證。

總結

在 Java 應用程式中加入 Proxy 支援並不困難,關鍵在於正確設定系統屬性與處理認證 Header。掌握上述技巧後,即可讓應用程式在受限的企業網路環境中,順暢存取網際網路資源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved