我在使用Apache IO FTPSClient将文档放置在FTPS服务器上时遇到问题。我能够连接到服务器。我的状态很好(返回211)。如果我要求提供目录列表,我将得到空值。
// context is the SSL context
FTPSClient client = new FTPSClient(context);
InputStream stream = null;
try {
// fetching a document from a URL. returning the input stream.
// The stream is not null
ContentDocDO docDo = soapClient.fetchDocument(docURL, contextOpt);
stream = docDo.getStream();
client.connect("someftpserver.com");
client.enterLocalPassiveMode();
client.login("someuser", "somepassword");
client.changeWorkingDirectory("/RIM/test");
System.out.println("client status: "+client.getStatus());
// Changing the name of the document to be stored
String fileName = docNameMap.get(name) + docDo.getContentType();
client.storeFile(fileName,stream);
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
finally {
try{
if(stream != null){
stream.close();
}
client.disconnect();
}catch(IOException e){
e.printStackTrace();
}
}
我没有看到任何错误。我可以通过FileZilla连接到服务器。它使用基于TLS的显式FTP。
感谢您的帮助。
答案 0 :(得分:0)
我的状态太狭窄了。我添加了以下行:
client.addProtocolCommandListener(new PrintCommandListener(
new PrintWriter(System.out)));
这让我看到尚未设置PROT。然后添加:
client.execPROT("P");
允许所有人通过。