Код ниже работает на двух других сайтах, которые я пробовал, но не буду работать с моим доменом, размещенным на 1and1. Код возврата всегда равен 500 - Постоянный ответ отрицательного завершения.FTP to 1and1.com
Я знаю, что подключаюсь, потому что FTPReply.isPositiveCompletion (reply) возвращает true. Я попробовал это с чтением файла с телефона и отправкой его из массива байтов, заполненного на ранней стадии кода. Это массив байтов. Оба возвращают 500. Оба работают на других сайтах.
Если я не использую enterLocalPassiveMode(), код перестает выполняться при вызове storeFile. Никаких исключений, без тайм-аута сокета. Он заканчивается там, и задача async не будет звонить снова в этом сеансе. Код не делает этого на других сайтах.
Я пробовал как типы файлов ASCII, так и BINARY. Оба возвращают 500. Сайт 1and1 говорит, что я использую свой домен и порт 21. Я могу подключиться к CoreFTP и читать и писать с использованием обеих учетных записей, которые я настроил.
Я также устал от ftp4j и имел тот же ответ со всеми сценариями, поэтому вернулся к Apache, потому что код уже был написан с надежным захватом ошибок.
Я пробовал и mydomain.com, и ftp.mydomian.com. 500 на обоих. Я также попробовал квадрат точки, который я вижу в окне CoreFTP, но я получаю «не могу разрешить имя узла» с помощью кода Java Apache. Может быть, не статический IP-адрес?
Это то, что делает CoreFTP. Он подключается к порту 21, а затем переходит в пассивный режим и соединение ASCII.
Это длинный снимок, но есть ли у кого-нибудь еще FTP-сервер для своего домена 1and1, используя Java в Android Studio?
Грег
Разрешающая mydomain.com ...
Connect гнездо # 5684 к xx.xx.xx.xxx, порт 21 ... 220 Microsoft FTP Service
USER ftp79815757-0
331 Пароль необходим для ftp79815757-0.
PASS **********
230 Пользователь вошел в систему.
СИС
215 Windows_NT
Keep Alive от ... PWD
257 "/ ftp79815757-0" является текущий каталог.
PASV
227 Ввод пассивного режима (xx, xxx, xx, xxx, xxx, xxx).
СПИСОК
Подключите розетку № 5700 к xx.xx.xx.xx, порт 62894 ... 150 Открытие соединения данных в режиме ASCII.
226 Передача завершена.
Переданы 51 байт в 0,094 секунд
FTPClient mFtpClient = new FTPClient();
String ip = "my domain dot com";
String userName = "ftp79815757-0";
String pass = "password";
mFtpClient.connect(InetAddress.getByName(ip));
mFtpClient.login(userName, pass);
int reply = mFtpClient.getReplyCode();
if (FTPReply.isPositiveCompletion(reply)) {
mFtpClient.setFileType(FTP.BINARY_FILE_TYPE);
//one thread said this would do the trick
mFtpClient.enterLocalPassiveMode();
mFtpClient.enterRemotePassiveMode();
InputStream stream = new ByteArrayInputStream(imageData);
//I have two accounts. One points to images_in
/*if (!mFtpClient.changeWorkingDirectory("images_in")) {
Log.e("ChangeDir", String.valueOf(mFtpClient.getReplyCode()));
}*/
if (!mFtpClient.storeFile("remoteName.jpg", stream)) {
Log.e("FTPUpload", String.valueOf(mFtpClient.getReplyCode()));
}
stream.close();
mFtpClient.disconnect();
}