Я пытаюсь подключиться к FTP-серверу и отображать данные в моем приложении для Android после извлечения его с сервера, но мне не удалось это выяснить.Я сталкиваюсь с вышеупомянутой проблемой.Класс FTPDownloader находится внутри класса MainActivity, и я вызываю его с помощью new FTPDownloader (). Execute (); .Я вызываю doInBackground () для FTPDownloader () после нажатия кнопки в классе MainActivity.Но ничего не происходит, как будто метод doInBackground () никогда не запускался.Приложение не зависает, но ничего не происходит.Спасибо заранее, любая помощь приветствуется.
private class FTPDownloader extends AsyncTask<Void, Void, Void> {
FTPClient ftp = null;
InputStream in;
public FTPDownloader() {
ftp = null;
}
public void disconnect() {
if (this.ftp.isConnected()) {
try {
this.ftp.logout();
this.ftp.disconnect();
} catch (IOException f) {
// do nothing as file is already downloaded from FTP server
}
}
}
@Override
protected Void doInBackground(Void... voids) {
try {
ftp = new FTPClient();
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
int reply;
ftp.connect("12.123.12.123");
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
throw new Exception("Exception in connecting to FTP Server");
}
ftp.login("user1234","1234" );
ftp.setFileType(FTP.BINARY_FILE_TYPE);
ftp.enterLocalPassiveMode();
in = ftp.retrieveFileStream("filePath");
} catch (Exception e) {
e.printStackTrace();
Log.i("FTP", "Error Occurred.");
}
try {
int data = in.read();
while (data != -1) {
String s = "";
char ch = (char) data;
if (ch != ',') {
s = s + ch;
} else {
s = s + " ";
gblprpd.add(s);
data = in.read();
}
}
in.close();
for (int i = 0; i < gblprpd.size(); ++i) {
String s = "";
for (int j = 0; j < 9; ++j) {
++i;
s = s + gblprpd.get(i);
}
dta.add(s);
}
} catch (IOException e) {
e.printStackTrace();
Log.i("FTP", "Error Occurred");
}
disconnect();
return null;
}
@Override
protected void onPreExecute()
{
}
@Override
protected void onPostExecute(Void cd) {
TextView output = (TextView) findViewById(R.id.output);
output.setText("Data Retrieved:");
for (int k = 0; k < dta.size(); ++k) {
roes.get(k + 1).setText(dta.get(k));
}
for (int k = dta.size() + 1; k < 16; ++k)
roes.get(k).setVisibility(View.GONE);
ScrollView sv = (ScrollView) findViewById(R.id.sv);
sv.setVisibility(View.VISIBLE);
HorizontalScrollView hsv = (HorizontalScrollView) findViewById(R.id.hsv);
hsv.setVisibility(View.VISIBLE);
}
}
}
Журналы:
06-12 21:08:30.797 23404-23469/com.example.quickstart I/System.out: 220 Microsoft FTP Service
06-12 21:08:30.800 23404-23469/com.example.quickstart I/System.out: USER user1234
06-12 21:08:30.861 23404-23469/com.example.quickstart I/System.out: 331 Password required
06-12 21:08:30.862 23404-23469/com.example.quickstart I/System.out: PASS 1234
06-12 21:08:30.936 23404-23469/com.example.quickstart I/System.out: 230 User logged in.
06-12 21:08:30.938 23404-23469/com.example.quickstart I/System.out: TYPE I
06-12 21:08:31.018 23404-23469/com.example.quickstart I/System.out: 200 Type set to I.
06-12 21:08:31.019 23404-23469/com.example.quickstart I/System.out: PASV
06-12 21:08:31.082 23404-23469/com.example.quickstart I/System.out: 227 Entering Passive Mode (14,141,70,165,66,149).
06-12 21:08:31.145 23404-23469/com.example.quickstart I/System.out: RETR File\Path
06-12 21:08:31.213 23404-23469/com.example.quickstart I/System.out: 125 Data connection already open; Transfer starting.
06-12 21:08:46.814 23404-23415/com.example.quickstart I/art: Background sticky concurrent mark sweep GC freed 910864(25MB) AllocSpace objects, 0(0B) LOS objects, 27% free, 29MB/40MB, paused 1.234ms total 106.681ms
06-12 21:08:46.976 23404-23415/com.example.quickstart I/art: Background sticky concurrent mark sweep GC freed 926388(25MB) AllocSpace objects, 0(0B) LOS objects, 28% free, 29MB/40MB, paused 1.118ms total 104.876ms
Пожалуйста, помогите, любая помощь приветствуется.Заранее спасибо