从AS400到Z / OS的Java FTPS数据

时间:2018-10-31 02:52:38

标签: java ftps

我正在尝试使用“ 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;
    }
}
 

0 个答案:

没有答案