Я пытаюсь написать метод FTPS с помощью "org.apache.commons.net.ftp.FTPSClient"
выполнение передачи данных из AS400 в Z / OS
При выполнении FTPS произошли две ошибки.
Ошибка 1: поскольку нам нужно отправить файл в zos мэйнфреймов, необходима кодировка передачи данных файла, команда ftp «ltpye c 933» выполняется в последней версии метода ftp. Когда я использую "ftpsClient.sendCommand (" ltype c 933 ");" Чтобы выполнить эту команду, я получил ниже сообщение об ошибке (первое красное поле).
сообщение об ошибке: 500 неизвестных команд ltype
Ошибка 2: Когда я запускаю «ftpsClient.storeFile» для загрузки файла на сервер zos, я получаю ошибку ниже (второе красное поле);
сообщение об ошибке: 425-сервер требует защищенного подключения к данным
425 не может открыть соединение для передачи данных
введите описание изображения здесь
Любой совет для меня?
Вот мой код:
boolean FTPSFile(String filepath, String filename, String country) {
String region = bundle.getString("region." + country);
String protocol = "TLSv1.2"; // SSL/TLS
FTPSClient ftpsClient = new FTPSClient(protocol);
ftpsClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
try {
ftpsClient.connect(ftpHost, 990);
ftpsClient.login(ftpId, ftpPw);
ftpsClient.setFileType(FTP.ASCII_FILE_TYPE);
if (country.equals("766") || country.equals("858")
|| country.equals("761") || country.equals("836")) {
ftpsClient.setFileType(FTP.BINARY_FILE_TYPE);
}
ftpsClient.enterLocalPassiveMode();
if (ftpsClient.isConnected()) {
getLogMsg().append("FTPing SIF file. Region = " + region,
LogMsg.TEXT_MSG);
String sendname = "'" + ftpDataset + country + ".LSIFATB'";
getLogMsg().append(
"sending file: = " + filepath + filename + " as "
+ sendname, LogMsg.TEXT_MSG);
if (country.equals("766") || country.equals("761")) {
int returnCode = ftpsClient.sendCommand("ltype c 933");
System.out.println("return code for command [ltype c 933] is :" + returnCode);
}
// Taiwan
if (country.equals("858") || country.equals("836")) {
int returnCode = ftpsClient.sendCommand("ltype c 937");
System.out.println("return code for command [ltype c 937] is :" + returnCode);
}
InputStream input_sifData;
input_sifData = new FileInputStream(filepath + filename);
boolean ftp_res = ftpsClient.storeFile(sendname, input_sifData);
input_sifData.close();
getLogMsg().append("ftp result (sending SIF): " + ftp_res,
LogMsg.TEXT_MSG);
int returnCode = ftpsClient.sendCommand("site filetype=jes");
System.out.println("return code for command [site filetype=jes] is :" + returnCode);
String jobname = bundle.getString("app.sif.jobname." + country);
ftpsClient.setFileType(FTP.ASCII_FILE_TYPE);
InputStream input_job;
input_job = new FileInputStream(bundle.getString("app.sif.directory") + "/"
+ region + country + "/jcl.txt");
boolean ftp_res_job = ftpsClient.storeFile("jcl.txt '" + jobname
+ "'", input_job);
input_sifData.close();
getLogMsg().append("ftp result (sending jcl): " + ftp_res_job,
LogMsg.TEXT_MSG);
return true;
} else {
getLogMsg().append("Could not connect to the specified host.",
LogMsg.ERROR_MSG);
return false;
}
} catch (SocketException e1) {
e1.printStackTrace();
return false;
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return false;
}
}