URLConnection with FTP protocol

Ito Kazumitsu kaffe@rufus.w3.org
Fri, 27 Apr 2001 13:47:32 +0900


In message "Re: URLConnection with FTP protocol"
    on 01/04/26, Ito Kazumitsu <ito.kazumitsu@hitachi-cable.co.jp> writes:

> One thing I am worried about is that proxyHost, useProxy
> and proxyPort are static.  Changing their values may
> cause some trouble.

So this should be safer.

--- HttpURLConnection.java.orig	Fri Jun 16 16:23:15 2000
+++ HttpURLConnection.java	Fri Apr 27 13:33:08 2001
@@ -27,9 +27,12 @@
 public class HttpURLConnection
   extends java.net.HttpURLConnection {
 
-private static String proxyHost;
-private static int proxyPort = -1;
-private static boolean useProxy = false;
+private static String defaultProxyHost;
+private static int defaultProxyPort = -1;
+private static boolean defaultUseProxy = false;
+private String proxyHost;
+private int proxyPort;
+private boolean useProxy;
 
 // store header fields as (key, value) pairs
 private Vector headerFields = new Vector(0);
@@ -42,8 +45,8 @@
 static {
 	// How these properties are undocumented in the API doc.  We know
 	// about them from www.icesoft.no's webpage
-	proxyHost = System.getProperty("http.proxyHost");
-	if (proxyHost != null) {
+	defaultProxyHost = System.getProperty("http.proxyHost");
+	if (defaultProxyHost != null) {
 		// Sun also supports a http.nonProxyHosts property to
 		// avoid proxy use for local sites.  It's a regular expression
 		// like so "*.pa.dec.com|*.compaq.com"
@@ -52,10 +55,10 @@
 		// In JDK 1.2, the properties are read when an connection
 		// is established, allowing the use of different proxies
 		// during the run-time of a program.  FIXME
-		useProxy = true;
+		defaultUseProxy = true;
 		String pp = System.getProperty("http.proxyPort");
 		if (pp != null) {
-			proxyPort = Integer.parseInt(pp);
+			defaultProxyPort = Integer.parseInt(pp);
 		}
 	}
 }
@@ -63,6 +66,20 @@
 
 public HttpURLConnection(URL url) {
 	super(url);
+	proxyHost = defaultProxyHost;
+	useProxy = defaultUseProxy;
+	proxyPort = defaultProxyPort;
+	if ((url.getProtocol()).equals("ftp")) {
+		proxyHost = System.getProperty("ftp.proxyHost");
+		if (proxyHost != null) {
+			useProxy = true;
+			String pp = System.getProperty("ftp.proxyPort");
+			if (pp != null) {
+				proxyPort = Integer.parseInt(pp);
+			}
+		}
+		// else I do not care.
+	}
 }
 
 public void connect() throws IOException {