FTP-клиент Android не может отправить файл на FTP-сервер Docker

Я пытаюсь подключить FTP-клиент со своего устройства Android к FTP-серверу, расположенному в докере (через образ stilliard / pure-ftpd). Connection: Ok, Login: Ok, но когда я пытаюсь отправить файл, у меня появляется следующее исключение из моего устройства Android:

failed to connect to localhost/127.0.0.1 (port 30007): connect failed: ECONNREFUSED (Connection refused)

Я пытался с "обычным" FTP-сервером (vsftpd, а не в Docker). Оно работает.

Я использую библиотеку Apache Commons, через зависимости Gradle.

compile group: 'commons-net', name: 'commons-net', version: '3.5'

Использование кода приложением Android (этот код является быстрым написанием кода для тестирования):

            FTPClient ftp = new FTPClient();
            try {
                ftp.connect("myhostname", 21);

                if (!ftp.login(mLogin, mPassword)) {
                    throw new RuntimeException();
                }

                int reply = ftp.getReplyCode();

                if (!FTPReply.isPositiveCompletion(reply)) {
                    ftp.disconnect();
                    return false;
                }

                ftp.enterLocalPassiveMode();

                if (!ftp.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE)) {
                    throw new RuntimeException();
                }
                for (String docPath : docPaths) {
                    Log.d(TAG, "doInBackground: sending " + docPath + "...");
                    File file = new File(docPath);
                    InputStream inputStream = new FileInputStream(file);
                    if (!ftp.storeUniqueFile(file.getName(), inputStream)) {
                        Log.e(TAG, "doInBackground: error while sending");
                        ftp.disconnect();
                        return false;
                    }
                    inputStream.close();
                }
                if (!ftp.logout()) {
                    throw new RuntimeException();
                }

                ftp.disconnect();

                return true;
            } catch (Exception e) {
                Log.e(TAG, "doInBackground: ", e);
                if (ftp.isConnected()) {
                    try {
                        ftp.disconnect();
                    } catch (IOException e1) {
                        Log.e(TAG, "doInBackground: ", e1);
                    }
                }
                return false;
            }

0 ответов

Другие вопросы по тегам