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

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

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

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

10.01.2015, 16:25. Просмотров 744. Ответов 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)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2015, 16:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Apache commons net Ftp в android (Программирование Android):

FTP клиент с использованием org.apache.commons.net - Программирование Android
Всем добрый день. Необходимо выгружать фотографии на FTP сервер. Изучив тему полнял что нужно использовать библиотеку Apache commons. ...

Gnu.io и org.apache.commons для проекта Android Studio - Программирование Android
Здравствуйте! Помогите, пожалуйста, новичку в программировании под Android! Второй день бьюсь над проблемой. Пытаюсь построить готовый...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log" - Программирование Android
Unknown method 'e' of 'org.apache.commons.logging.Log' package com.mycompany.myapp; import android.widget.*; import...

android и apache server - Программирование Android
Тут такое дело. Можно установить denver на пк, а потом подключится к этому компу через wifi с android и отправлять post запроси на сервер?

Apache POI - build failed (android studio) - Программирование Android
Всем привет! Я столкнулся с проблемой пытаюсь подключить библиотеку Apache POI для работы XWPFDocument в Android studio, но мне выбывает...

Как в Android приложении считать данные с хостинга ftp? - Программирование Android
Как в Android приложении считать данные с хостинга ftp? Заранее спасибо за помощь! :)

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.01.2015, 16:38 #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();
}
0
Shady1010
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 5
10.01.2015, 16:55  [ТС] #3
Выводит "Storage String is null", но почему (
0
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.01.2015, 21:45 #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();
}
}
ну и дальше локализуйте ошибку....
1
Shady1010
0 / 0 / 0
Регистрация: 03.10.2014
Сообщений: 5
11.01.2015, 02:03  [ТС] #5
Спасибо большое за уделенное время. Я сделал как вы сказали, в итоге на экране выводилось сообщение ( код ответа 500) в wiki написано (500 - синтаксическая ошибка, команда не может быть интерпретирована (возможно она слишком длинна)) я , конечно не совсем понял, что это значит, но копавшись на stackoverflow, увидел метод ftpClient.enterLocalPassiveMode(), который уже не раз мне встречался , решил добавить и посмотреть, что получится, в итоге все заработало. Ошибка java.lang.NullPointerException: storage == null все еще осталась, завтра будут искать проблему. Простите, я многого пока не понимаю ))))), да и английский плохо знаю, только недавно начал изучать android.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2015, 02:03
Привет! Вот еще темы с ответами:

VB NET и Android - Программирование Android
может глупо. возможно программирование на VB NET под Android?

Android java.net.SocketTimeoutException - Программирование Android
Запускаю поток в нем в цикле выполняю функцию getObjectS public String getObjectS(String objId, String sessionId) { ...

Android.net.ConnectivityManager.getActiveNetworkInfo() - Программирование Android
Объясните мне, пожалуйста, понятно, что делает этот метод (android.net.ConnectivityManager.getActiveNetworkInfo()). В документации...

Не срабатывает android.net.wifi.STATE_CHANGE - Программирование Android
На планшете какое-то время приёмник ловит изменения wi-fi, но через некоторое время перестаёт Добавлено через 10 минут public...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.01.2015, 02:03
Ответ Создать тему
Опции темы

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