java FTP org.apache.commons.net.MalformedServerReplyException:截断的服务器应答:';220';
我使用JavaApacheCommonsNetLibrary从FTP服务器下载文件。作为一个起点,我试图重用来自的代码。通常,代码执行时没有问题/异常,但是对于一个特定的FTP服务器(),我得到以下错误: org.apache.commons.net.MalformedServerReplyException:截断的服务器回复:“220” 我的代码如下:java FTP org.apache.commons.net.MalformedServerReplyException:截断的服务器应答:';220';,java,ftp,apache-commons-net,Java,Ftp,Apache Commons Net,我使用JavaApacheCommonsNetLibrary从FTP服务器下载文件。作为一个起点,我试图重用来自的代码。通常,代码执行时没有问题/异常,但是对于一个特定的FTP服务器(),我得到以下错误: org.apache.commons.net.MalformedServerReplyException:截断的服务器回复:“220” 我的代码如下: String server = "ftp.nasdaqtrader.com"; int port = 21; String user = "a
String server = "ftp.nasdaqtrader.com";
int port = 21;
String user = "anonymous";
String pass = "pw";
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect(server, port);
ftpClient.login(user, pass);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
// APPROACH #1: using retrieveFile(String, OutputStream)
String remoteFile1 = "/symboldirectory/nasdaqlisted.txt";
File downloadFile1 = new File("C:\\filedirectory\\nasdaqlisted.txt");
OutputStream outputStream1 =
new BufferedOutputStream(new FileOutputStream(downloadFile1));
boolean success = ftpClient.retrieveFile(remoteFile1, outputStream1);
outputStream1.close();
if (success) {
System.out.println("File #1 has been downloaded successfully.");
}
} catch (IOException ex) {
System.out.println("Error: " + ex.getMessage());
ex.printStackTrace();
} finally {
try {
if (ftpClient.isConnected()) {
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
从我的Windows终端连接会产生以下结果:
C:\Computer>ftp.nasdaqtrader.com
已连接到ftp.nasdaqtrader.com。
220
200选择UTF8命令成功-UTF8编码现在打开。
用户(ftp.nasdaqtrader.com:(无)):匿名
331允许匿名访问,将身份(电子邮件名称)作为密码发送。
密码:
230用户已登录。
ftp>退出
再见。
对于类似的FTP服务器(NOAA weather),代码通过Windows终端连接和下载时会产生以下结果:
C:\Computer>ftp.cdc.noaa.gov
已连接到ftp.cdc.noaa.gov。
220-**********************************************************************
220-**警告**警告**警告**警告**警告**警告**警告***
220-* *
220-*这是商务部(DOC)的计算机系统。文件*
220-*计算机系统用于处理美国官方文件*
220-*仅限政府信息。未经授权访问或使用此文件*
220-*计算机系统可能会对违规者进行刑事、民事和/或刑事处罚*
220-*行政行动。DOC计算机中包含的所有数据*
220-*系统归DOC所有,可能被审计、拦截*
220-*以任何方式记录、读取、复制或捕获,并在*
220-*由授权人员以任何方式进行。没有隐私权*
220-*在本系统中。系统人员可披露任何潜在的*
220-*在DOC计算机系统上发现的犯罪证据要适当*
220-*当局。任何经授权或授权的用户使用本系统*
220-*未经授权即构成对本次审计、拦截、*
220-*记录、读取、复制、捕获和披露计算机信息*
220-*活动*
220-* *
220-**警告**警告**警告**警告**警告**警告**警告***
220-**********************************************************************
220
200始终处于UTF8模式。
用户(ftp.cdc.noaa.gov:(无)):匿名
请指定密码。
密码:
230登录成功。
因此,比较这两个回复,ftp.nasdaqtrader.com似乎没有提供适当的(标准?)220回复(即截断)。因此:
谢谢 apachecommons网络库认为来自服务器的
220
响应不符合rfc959(可能是正确的)
如果要允许库与服务器对话,请调用:
谢谢你救了我一天
ftpClient.setStrictReplyParsing(false);