我正在尝试使用“ org.apache.commons.net.ftp.FTPSClient”编写FTPS方法 执行从AS400到Z / OS的数据传输 执行FTPS时出现以下两个错误。
错误1:由于我们需要将文件发送到大型机zos,因此需要文件数据传输字符集,因此在最新版本的ftp方法中执行ftp命令“ ltpye c 933”。当我使用“ ftpsClient.sendCommand(” ltype c 933“);”执行此命令,我得到以下错误信息(第一个红色框)。 错误消息:500 unknow命令ltype
错误2:当我运行“ ftpsClient.storeFile”将文件上传到zos服务器时,出现以下错误(第二个红色框); 错误消息:425服务器所需的受保护的数据连接 425无法打开数据连接 在此处输入图片描述
有人给我建议吗? 这是我的代码:
布尔型FTPSFile(字符串文件路径,字符串文件名,字符串国家/地区){
字符串区域= bundle.getString(“区域。” +国家);
字符串协议=“ TLSv1.2”; // SSL / TLS
FTPSClient ftpsClient =新的FTPSClient(协议);
ftpsClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
尝试{
ftpsClient.connect(ftpHost,990);
ftpsClient.login(ftpId,ftpPw);
ftpsClient.setFileType(FTP.ASCII_FILE_TYPE);
如果(country.equals(“ 766”)|| country.equals(“ 858”)
|| country.equals(“ 761”)|| country.equals(“ 836”)){
ftpsClient.setFileType(FTP.BINARY_FILE_TYPE);
}
ftpsClient.enterLocalPassiveMode();
如果(ftpsClient.isConnected()){
getLogMsg()。append(“ FTPing SIF文件。Region =” + region,
LogMsg.TEXT_MSG);
字符串sendname =“'” + ftpDataset +国家+“ .LSIFATB'”;
getLogMsg()。append(
“发送文件:=“ +文件路径+文件名+”为“
+ sendname,LogMsg.TEXT_MSG);
如果(country.equals(“ 766”)|| country.equals(“ 761”)){
int returnCode = ftpsClient.sendCommand(“ ltype c 933”);
System.out.println(“命令[ltype c 933]的返回码是:” + returnCode);
}
//台湾
如果(country.equals(“ 858”)|| country.equals(“ 836”)){
int returnCode = ftpsClient.sendCommand(“ ltype c 937”);
System.out.println(“命令[ltype c 937]的返回码是:” + returnCode);
}
InputStream input_sifData;
input_sifData =新的FileInputStream(文件路径+文件名);
布尔值ftp_res = ftpsClient.storeFile(sendname,input_sifData);
input_sifData.close();
getLogMsg()。append(“ ftp结果(发送SIF):” + ftp_res,
LogMsg.TEXT_MSG);
int returnCode = ftpsClient.sendCommand(“ site filetype = jes”);
System.out.println(“命令[site filetype = jes]的返回码为:” + returnCode);
字符串jobname = bundle.getString(“ app.sif.jobname。” +国家);
ftpsClient.setFileType(FTP.ASCII_FILE_TYPE);
InputStream input_job;
input_job =新的FileInputStream(bundle.getString(“ app.sif.directory”)+“ /”
+地区+国家+“ /jcl.txt”);
布尔值ftp_res_job = ftpsClient.storeFile(“ jcl.txt'” +工作名称
+“'”,input_job);
input_sifData.close();
getLogMsg()。append(“ ftp结果(发送jcl):” + ftp_res_job,
LogMsg.TEXT_MSG);
返回true;
}其他{
getLogMsg()。append(“无法连接到指定的主机。”,
LogMsg.ERROR_MSG);
返回false;
}
} catch(SocketException e1){
e1.printStackTrace();
返回false;
} catch(IOException e1){
// TODO自动生成的catch块
e1.printStackTrace();
返回false;
}
}