Не удается прочитать файл с FTP в Android? - PullRequest
0 голосов
/ 10 августа 2011

Я пытаюсь прочитать данные из файла с FTP-сервера.Этот кусок кода отлично работает в Java, когда я запускаю со своего настольного компьютера.Я скопировал тот же код на Android, и я получаю исключение.Исключение:

java.io.IOException: Невозможно подключиться к серверу: Невозможно получить файл: 550

Я понятия не имею, почему это происходит, когда тот же код работает идеальноДжава.Код Java:

String s = "ftp://username:password@ftp.mysite.x10.mx:21/sg1996text.txt;type=i";
    URL u;
    String f="";
    try {
        u = new URL(s);
        URLConnection uc=u.openConnection();
        BufferedInputStream bis=new  BufferedInputStream(uc.getInputStream()); //This is where exception i raised.
        System.out.println("IS opened");
        int i;
        while((i=bis.read())!=-1)
            f=f+(char)i;
        System.out.println("File Read");
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 

Ответы [ 2 ]

1 голос
/ 29 мая 2012

Удалить:

;type=i

с вашего URL:

 String s = "ftp://username:password@ftp.mysite.x10.mx:21/sg1996text.txt;type=i";

Это работает в моем приложении.

0 голосов
/ 21 октября 2012

Ошибка 550 обычно означает «ошибка разрешения», поэтому наиболее вероятной причиной является несоответствие имени пользователя / пароля (но см. Случай № 3).

Тем не менее, если тот же код работает на вашем рабочем столе, имя пользователя и пароль должны быть правильными. Возможности, которые я вижу:

  • Пакет, который вы используете, не совпадает между настольным ПК и Android, и версия Android неправильно анализирует имя пользователя / пароль. Попробуйте прослушать трафик FTP или измените адрес FTP-сервера на управляемый вами FTP-сервер (вы можете временно развернуть его на своем рабочем столе) и проверьте, правильно ли передаются имя пользователя и пароль.
  • Произошла ошибка DNS, и ваш рабочий стол (или ваш Android) не подключается к ftp.mysite.x10.mx, а куда-то еще, например. установка для разработки на localhost (я сделал это один раз; мне потребовалось некоторое время, чтобы понять это). Попробуйте изменить имя сервера на его IP-адрес.
  • Как и в случае (1), но ошибка синтаксического анализа вызвана спецификацией TYPE I («; type = i» в конце URL), которую пакет Android не распознает, в то время как пакет для настольного компьютера распознает. Должен дать 500 Ошибка, а не 550; но несколько серверов используют ошибку 550, чтобы указать, что файл не найден , и пакет полагает, что вам нужен файл sg1996text.txt; type = i вместо sig1996text.txt. Удалите '; type = i' и посмотрите, что произойдет.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...