listfiles ftpsclient ftpclient example commons java ssl ftp ftps apache-commons-net

ftpclient - error commons-net FTPSClient en código Java



ftpsclient jar (1)

Estoy utilizando el paquete commons-net por primera vez y utilizando el siguiente código para convertir un archivo ftp desde un servidor FileZilla a través de SSL. Me encuentro frente a un error cuando ejecuto el programa. ¿Qué está mal en el código?

import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPReply; import org.apache.commons.net.ftp.FTPSClient; public class CommonsNetFTPSTest { public static void main(String[] args) throws Exception { System.setProperty("javax.net.debug", "ssl"); String server = "XXX.XXX.XXX.XXX"; String username = "USER_TEST"; String password = "ABCD1234"; String remoteFile = "/Data/Input/PH240819"; String localFile = "PH240819"; String protocol = "SSL"; // TLS / null (SSL) int port = 990; int timeoutInMillis = 10000; boolean isImpicit = true; FTPSClient client = new FTPSClient(protocol, isImpicit); client.setDataTimeout(timeoutInMillis); client.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); System.out.println("################ Connecting to Server ################################"); try { int reply; System.out.println("################ Connect Call ################################"); client.connect(server, port); client.login(username, password); System.out.println("################ Login Success ################################"); //client.setFileType(FTP.BINARY_FILE_TYPE); client.setFileType(FTP.NON_PRINT_TEXT_FORMAT); client.execPBSZ(0); // Set protection buffer size client.execPROT("P"); // Set data channel protection to private client.enterLocalPassiveMode(); System.out.println("Connected to " + server + "."); reply = client.getReplyCode(); if (!FTPReply.isPositiveCompletion(reply)) { client.disconnect(); System.err.println("FTP server refused connection."); System.exit(1); } client.listFiles(); boolean retrieved = client.retrieveFile(remoteFile, new FileOutputStream(localFile)); } catch (Exception e) { if (client.isConnected()) { try { client.disconnect(); } catch (IOException ex) { ex.printStackTrace(); } } System.err.println("Could not connect to server."); e.printStackTrace(); return; } finally { //client.disconnect(); client.logout(); System.out.println("# client disconnected"); } } }

El error está debajo-

main, WRITE: SSLv3 Handshake, length = 56 main, READ: SSLv3 Change Cipher Spec, length = 1 JsseJCE: Using cipher RC4 from provider TBD via init CipherBox: Using cipher RC4 from provider from init IBMJCE version 1.2 JsseJCE: Using MessageDigest MD5 from provider IBMJCE version 1.2 main, READ: SSLv3 Handshake, length = 56 *** Finished verify_data: { 7, 71, 60, 4, 21, 222, 78, 66, 166, 137, 172, 57, 64, 131, 115, 89, 94, 128, 164, 80, 172, 124, 246, 14, 224, 91, 88, 128, 21, 44, 149, 161, 130, 112, 250, 11 } *** cached session [Session-1, SSL_RSA_WITH_RC4_128_MD5] %% Cached client session: [Session-1, SSL_RSA_WITH_RC4_128_MD5] Exception in thread "main" java.lang.NullPointerException at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:441) at org.apache.commons.net.ftp.FTPSClient.sendCommand(FTPSClient.java:535) at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:520) at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:569) at org.apache.commons.net.ftp.FTP.quit(FTP.java:781) at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:706) at CommonsNetFTPSTest.main(CommonsNetFTPSTest.java:85)

Parece que no va más allá del punto donde se invoca el inicio de sesión. La identificación de usuario y la contraseña son todas correctas. Tengo un certificado SSL que me fue entregado por la gente que aloja el servidor FileZilla y luego de extraer el certificado al archivo certfile.txt usando openSSL, lo he instalado en mi java / jre / lib / security / cacerts usando el siguiente comando:

keytool -import -alias "cert" -file certfile.txt -keystore /usr/java5/jre/lib/security/cacerts

Todavía no puedo determinar la causa del error. de acuerdo con el registro de ejecución anterior al texto de error, parece que se conecta con éxito y los apretones de manos, pero algo sale mal justo después de eso. Estoy ejecutando el programa desde un recuadro Unix (AIX 5.3), que es la máquina cliente.

¡Ayuda!


Mi classpath apuntaba a una versión más antigua del archivo commons-net jar.