Hello Harm,

FTP and HTTP are completely different protocols.
You can not use HttpClient to access an FTP server.

You may be able to tunnel FTP via an HTTP proxy,
but HttpClient will only help you with the tunnelling.
You still have to implement FTP yourself, including
the authentication against the FTP server.

cheers,
  Roland




"Laat, Harm de" <[EMAIL PROTECTED]> 
20.12.2005 13:51
Please respond to
"HttpClient User Discussion"


To
"'[email protected]'" 
<[email protected]>
cc

Subject
ftp via http






Hi all, 

I'm trying to access a FTP server via a HTTP proxy server (in this case
Microsoft ISA server).

I have to authenticate with my FTP server. So I tried to incorporate my
username and password in the ftp url:

ftp://test:[EMAIL PROTECTED]/test

However, no luck just yet... I have also tried to set the username and
password with the setCredentials method. Also without luck.

Can somebody please help???



I have written the following code:


// imports //

public class TestClient {

    public static void main(String[] args) {
        new TestClient().testFtpViaHttp();
    }
 
    public void testFtpViaHttp() {
 
        HttpClient client = new HttpClient();
 
        HostConfiguration hostConfig = client.getHostConfiguration();
        hostConfig.setProxy("proxy", 8080);
        client.setHostConfiguration(hostConfig);
 
        Protocol protol = new Protocol("ftp", new
DefaultProtocolSocketFactory(), 21);
        Protocol.registerProtocol("ftp", protol);
 
        Credentials proxyCreds = new NTCredentials("username", "pass","",
"DOMAIN" );
        client.getState().setProxyCredentials(AuthScope.ANY, proxyCreds);
 
        GetMethod gmethod = new GetMethod("ftp://xxx.xxx.xxx.xxx/test/";);
 
        gmethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, 
                new DefaultHttpMethodRetryHandler(3, false));
 
        try {
            // Execute the method.
            int statusCode = client.executeMethod(gmethod);

            if (statusCode != HttpStatus.SC_OK) {
              System.err.println("Method failed: " +
gmethod.getStatusLine());
            }

            // Read the response body.
            byte[] responseBody = gmethod.getResponseBody();

            // Deal with the response.
            // Use caution: ensure correct character encoding and is not
binary data
            System.out.println(new String(responseBody));

          } catch (HttpException e) {
            System.err.println("Fatal protocol violation: " +
e.getMessage());
            e.printStackTrace();
          } catch (IOException e) {
            System.err.println("Fatal transport error: " + 
e.getMessage());
            e.printStackTrace();
          } finally {
            // Release the connection.
            gmethod.releaseConnection();
          } 

    }

}


Regards,

Harm de Laat




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to