2015-05-10 6 views
1

Код ниже работает на двух других сайтах, которые я пробовал, но не буду работать с моим доменом, размещенным на 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(); 
} 

ответ

0

Наконец получил. Основная проблема заключалась в том, что я использовал старую версию библиотеки Apache. Я использовал Jar-commons-net-1.4.jar. Кто-то в другой теме указал мне на commons-net-3.3.jar.

Я прокомментировал как mFtpClient.enterLocalPassiveMode(), так и mFtpClient.enterRemotePassiveMode(), а с некоторым следом и ошибкой он работал с FTP.BINARY_FILE_TYPE, а не с ASCII_FILE_TYPE. ASCII получил файл там, но это был мусор.