Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Shady1010
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 5
#1

Apache commons net Ftp в android - Программирование Android

10.01.2015, 16:25. Просмотров 698. Ответов 4
Метки нет (Все метки)

Пишу программу для вывода названий файлов и директорий , на java никаких проблем не возникло, создал отдельный класс с новым потоком и там все разместил , а в android такое почему-то не катит . После долгих мучений вроде, что получилось, но программа вылетает и ошибка в логах java.lang.NullPointerException: storage == null, никак не могу понять почему, мне кажется он не подключается к серверу вообще , что я не так делаю?? В манифесте разрешение прописал .

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
public class Main extends ActionBarActivity {
ListView listView;
ArrayAdapter arrayAdapter;
String resultList[] = null;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
ResultFtp resultFtp = new ResultFtp();
resultFtp.execute();
 
}
 
class ResultFtp extends AsyncTask<Void, Void, Void>{
 
@Override
protected Void doInBackground(Void... params) {
 
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect("сервер");
ftpClient.login("логин, "пароль");
 
for(String f : ftpClient.listNames()){
 
resultList = ftpClient.listNames();
 
}
 
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
 
return null;
}
 
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
listView = (ListView) findViewById (R.id.listView);
arrayAdapter = new ArrayAdapter (Main.this, android.R.layout.simple_list_item_1, resultList);
listView.setAdapter(arrayAdapter);
 
}
}


В логах
Код
java.lang.NullPointerException: storage == null
            at java.util.Arrays$ArrayList.<init>(Arrays.java:38)
            at java.util.Arrays.asList(Arrays.java:155)
            at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:128)
            at com.example.shady1010.gimp.Main$ResultFtp.onPostExecute(Main.java:69)
            at com.example.shady1010.gimp.Main$ResultFtp.onPostExecute(Main.java:39)
            at android.os.AsyncTask.finish(AsyncTask.java:632)
            at android.os.AsyncTask.access$600(AsyncTask.java:177)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2015, 16:25     Apache commons net Ftp в android
Посмотрите здесь:
FTP клиент с использованием org.apache.commons.net Android
Android Gnu.io и org.apache.commons для проекта Android Studio
Android android и apache server
Как в Android приложении считать данные с хостинга ftp? Android
VB NET и Android Android
Android.net.ConnectivityManager.getActiveNetworkInfo() Android
Android Android java.net.SocketTimeoutException
Не срабатывает android.net.wifi.STATE_CHANGE Android
Android Android аппликация работаюшея с веб сервисом на .net(c#)
Соединение с сервером Apache Android
Java Apache commons net
Java Сети Commons net ftp file download

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.01.2015, 16:38     Apache commons net Ftp в android #2
Дык проверь...

Java
1
2
3
4
5
6
7
8
9
10
11
@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);
    listView = (ListView) findViewById (R.id.listView);
    if  (resultList!=null){
        arrayAdapter = new ArrayAdapter (Main.this, android.R.layout.simple_list_item_1, resultList);
        listView.setAdapter(arrayAdapter);
    }
    else 
          Toast.makeText(getBaseContext(), "Storage String is null", Toast.LONG).show();
}
Shady1010
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 5
10.01.2015, 16:55  [ТС]     Apache commons net Ftp в android #3
Выводит "Storage String is null", но почему (
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.01.2015, 21:45     Apache commons net Ftp в android #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Мысли вслух...

Что по-вашему у вас делает вот эта странная конструкция
Java
1
2
3
4
for(String f : ftpClient.listNames()){
 
resultList = ftpClient.listNames();
}
"для каждого элемента списка ftpClient.listNames() присвоить массиву строк resultList массив строк, возвращаемых ftpClient.listNames()"

Для отладки пробуйте также проверить на соединение с сервером, ошибки, давая маяки в onProgressUpdate, т.е.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class ResultFtp extends AsyncTask<Void, String, Void>{
 
@Override
protected Void doInBackground(Void... params) {
 
FTPClient ftpClient = new FTPClient();
try {
ftpClient.connect("сервер");
 
publishProgress("FTP server reply code: "+String.valueOf(ftpClient.getReplyCode()));
 
ftpClient.login("логин, "пароль");
 
resultList = ftpClient.listNames();
 
ftpClient.disconnect();
 
} catch (IOException e) {
publishProgress("Error occured. "+e.toString());
}
 
return null;
}
 
@Override
protected void onProgressUpdate(String... progress) {
        Toast.makeText(getBaseContext(),
                progress[0],
                Toast.LENGTH_SHORT).show();
}
 
@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);
    listView = (ListView) findViewById (R.id.listView);
    if  (resultList!=null){
        arrayAdapter = new ArrayAdapter (Main.this, android.R.layout.simple_list_item_1, resultList);
        listView.setAdapter(arrayAdapter);
    }
    else 
          Toast.makeText(getBaseContext(), "Storage String is null", Toast.LONG).show();
}
}
ну и дальше локализуйте ошибку....
Shady1010
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 5
11.01.2015, 02:03  [ТС]     Apache commons net Ftp в android #5
Спасибо большое за уделенное время. Я сделал как вы сказали, в итоге на экране выводилось сообщение ( код ответа 500) в wiki написано (500 - синтаксическая ошибка, команда не может быть интерпретирована (возможно она слишком длинна)) я , конечно не совсем понял, что это значит, но копавшись на stackoverflow, увидел метод ftpClient.enterLocalPassiveMode(), который уже не раз мне встречался , решил добавить и посмотреть, что получится, в итоге все заработало. Ошибка java.lang.NullPointerException: storage == null все еще осталась, завтра будут искать проблему. Простите, я многого пока не понимаю ))))), да и английский плохо знаю, только недавно начал изучать android.
Yandex
Объявления
11.01.2015, 02:03     Apache commons net Ftp в android
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru