Re: Some advice on dealing with a networking issue
 
On Thu, 21 Jan 2010, The Frog wrote:
There is a website, actually an ftp site with (surprise surprise!) files 
on it. each week a new file is added. On my local network is a shared 
folder that I need to keep updated with files from the FTP site. So far 
so simple. Here's the issue: Due to a proxy server (simple 
authentication where it requests a username and password to access the 
internet) I can only access the FTP site via a web browser (eg/ Internet 
Explorer, Firefox, etc...) and download the file(s) I want manually. 
What is being done 'behind the scenes' so to speak is that the web 
browser is using HFTP to download the file (FTP over HTTP). What I would 
like to do is to write an application that can download these files for 
me.
Have a read of sections 2.3 and 3 in here:
http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html
You can do 'HFTP' with a normal URLConnection. To summarise that link (all 
classes not from java.lang are from java.net):
SocketAddress proxyAddr = new InetSocketAddress("proxy.frogcorp.com", 8080);
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddr);
URL url = new URL("ftp://frog:noteasy@ftp.the-pond.org");
URConnection conn = url.openConnection(proxy);
You mention that your proxy server requires authentication. If it's doing 
this with the HTTP authentication mechanism, then you can, i believe, 
cooperate with that using Authenticator:
String username;
String password;
Authenticator.setDefault(new Authenticator() {
 	protected PasswordAuthentication getPasswordAuthentication() {
 		// should really validate host and prompt/realm here to make sure it's the proxy
 		return new PasswordAuthentication(username, password.toCharArray());
 	}
});
I don't think there's a way to do per-connection authentication with 
standard JDK classes. Apache HttpClient can do it, though, so that would 
be a cleaner option if you're willing to use an extra library and write 
slightly more long-winded code.
tom
-- 
You have now found yourself trapped in an incomprehensible maze.