Re: Reading remote files through authenticating proxy

NetcdfFile doesnt know anything about dods. Use NetcdfDataset.open() instead.

Jon Blower wrote:
Thanks John.  The following code worked:

    System.setProperty("http.proxyHost", "myproxyhost.com");
    System.setProperty("http.proxyPort", "8080");
    Authenticator.setDefault(new Authenticator()
    {
        public PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication("myusername",
"mypassword".toCharArray());
        }
    });
    NetcdfFile file
        new
DODSNetcdfFile("http://www.cdc.noaa.gov/cgi-bin/nph-nc/Datasets/ncep.reanaly
sis/pressure/uwnd.1992.nc", null);

Note that I had to explicitly use the DODSNetcdfFile() constructor.  When I
tried using NetcdfFile.open(<url>) the code seems to use the httpclient
libraries and hence does not connect.  I thought that if I passed a DODS URL
to the NetcdfFile.open() method, it would automatically recognise a DODS url
and construct a DODSNetcdfFile in the background?

Regards, Jon



-----Original Message-----
From: owner-netcdf-java@xxxxxxxxxxxxxxxx [mailto:owner-netcdf-java@xxxxxxxxxxxxxxxx] On Behalf Of John Caron
Sent: 10 October 2005 17:43
To: Jon Blower
Cc: netcdf-java@xxxxxxxxxxxxxxxx; support-netcdf-java@xxxxxxxxxxxxxxxx
Subject: Re: Reading remote files through authenticating proxy



Jon Blower wrote:

Hi all,

Does anyone know how (using the Java NetCDF libs) I can

read a remote
NetCDF or OpenDAP/DODS file through an authenticating proxy server using Basic authentication?

Thanks, Jon

--------------------------------------------------------------
Dr Jon Blower              Tel: +44 118 378 5213 (direct line)
Technical Director         Tel: +44 118 378 8741 (ESSC)
Reading e-Science Centre   Fax: +44 118 378 6413
ESSC                       Email: jdb@xxxxxxxxxxxxxxxxxxxx
University of Reading
3 Earley Gate
Reading RG6 6AL, UK
--------------------------------------------------------------


Do this through the java.net library, eg:

java.net.Authenticator.setDefault( new SimpleAuthenticator(name, pass));

public class SimpleAuthenticator
  extends Authenticator
{
  private String username,
                 password;
public SimpleAuthenticator(String username,String password)
  {
     this.username = username;
     this.password = password;
  }
protected PasswordAuthentication getPasswordAuthentication()
  {
     return new PasswordAuthentication(
            username,password.toCharArray());
  }
}


You can google Authenticator.setDefault, eg:

 http://www.javaworld.com/javaworld/javatips/jw-javatip46.html

I should caution that at some point, netcdf-java may switch to using apache commons httpclient library when accessing OpenDAP. That uses a slightly different mechanism for authentication, but it wont be hard to switch, if and when that happens.