Я использую FTPClient для хранения файла на FTP-сервере, который работает в среде мэйнфреймов.Технически это не сохранение файла, а использование его в качестве задания, которое должно быть передано в среду.Это можно рассматривать как выполнение сценария оболочки, если FTP-сервер работал в linux.
После отправки файла FTP-сервер отправляет обратно несколько ответов, но FTPClient выбирает первый ответ как код ответа и строку.
Пример:
STOR JOB.TXT
125 Sending Job to JES internal reader FIXrecfm 80
QUIT
250-It is known to JES as JOBXXXXX
250 Transfer completed successfully.
Итак, FTPClient сообщает мне, что ответ «125 Отправка задания в JES» вместо «250 Передача завершена успешно».Из-за этого я преждевременно закрываю FTP (как показано в примере), прежде чем действительно получу хороший ответ.
Как получить все ответы, связанные с командой, чтобы убедиться, что она была успешной или неудачной?
Я пытался поместить client.getReplyCode()
в цикл до 125, но он застрял в бесконечном цикле.
Пример кода:
final OutputStream os = client.storeFileStream("JOB.TXT");
os.write(job.getBytes());
os.close();
int reply = client.getReplyCode();
if ((reply != 125) && (!FTPReply.isPositiveCompletion(reply))) {
throw new IOException("Failed to submit the job, reply " + reply + ", "
+ client.getReplyString());
}