Autore Topic: FtpClient connessione  (Letto 470 volte)

Offline Laerte

  • Nuovo arrivato
  • *
  • Post: 28
  • Respect: 0
    • Mostra profilo
FtpClient connessione
« il: 09 Marzo 2016, 23:18:00 CET »
0
Buonasera ,nella mia App mi collego ad un server FTP (Altervista) per la creazione,eliminazione di file e cartelle.
Volevo fare in modo di connettermi all'avvio dell'App e disconnettermi all'uscita , senza doverlo fare ogni volta che entro ed esco da un activity,visto che quasi tutte ne fanno uso.

Alla luce di ciò avevo pensato di utilizzare una classe che estendesse Application in modo da richiamare l'oggetto FtpCLient restituito, ho proceduto in questo modo:
N.B (ParseApp estende Application):

Codice (Java): [Seleziona]
public class Ftp extends ParseApp{
         FTPClient mFTPClient = new FTPClient();

         public FTPClient connetti(){



        try {
                if (android.os.Build.VERSION.SDK_INT > 9) {
                        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                                        .permitAll().build();
                        StrictMode.setThreadPolicy(policy);
                }
                // connecting to the host

        //      mFTPClient.setDefaultTimeout(100);

                mFTPClient.connect("sito.altervista.org", 21);

                // now check the reply code, if positive mean connection success
                if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
                        // login using username & password
                        boolean status = mFTPClient.login("user", "passw");



                        mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
                        mFTPClient.enterLocalPassiveMode();
                        Log.d("FT", "Mi sono connesso");
               

                }
        } catch (IOException e) {
                e.printStackTrace();
                Log.d("FTP", "VEDO : ERRORE DI CONNESSIONE");
                return null;
        }
        return mFTPClient;

        }
         
          public void ftpDisconnect() {
          try {
                  mFTPClient.logout();
                  mFTPClient.disconnect();
                 
          } catch (Exception e) {
                  Log.d("TAG", "Error occurred while disconnecting from ftp server.");
          }

  }


}

Avevo pensato di richiamare in ogni classe che fa uso della connessione il metodo "connetti()" di questa classe Application , ma ho il dubbio che cosi facendo io mi stia riconnettendo ogni volta, proprio perchè a volte mi succede che spostandomi da un Activity all'altra (che sfrutta l'oggetto ftpClient restituito da Application ) accade che si disconnette, forse perchè si "impalla" a causa del fatto che cerco di connettermi diverse volte essendo già connesso.
Come dovrei procedere per connettermi solamente una volta?

Post unito: [time]09 Marzo 2016, 23:26:36 CET[/time]
Il LogCat mi restituisce questo :

03-09 23:25:11.922: W/System.err(17163): org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received.  Server closed connection.
03-09 23:25:11.922: W/System.err(17163):    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:368)
03-09 23:25:11.922: W/System.err(17163):    at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:292)
03-09 23:25:11.923: W/System.err(17163):    at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:418)
03-09 23:25:11.923: W/System.err(17163):    at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:966)
03-09 23:25:11.923: W/System.err(17163):    at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:954)


Post unito: [time]09 Marzo 2016, 23:57:01 CET[/time]
Guardando in rete ho visto che "FTP response 421 received" significa proprio che sono stato buttato fuori dal server perchè il mio ip si era connesso troppe volte di seguito.
Devo trovare una soluzione per connettermi solamente una volta.
Avevo provato a connettermi e disconnettermi in ogni Activity ,ma dava lo stesso problema.

Post unito: [time]10 Marzo 2016, 00:00:34 CET[/time]
Sul web c'è chi dice di cambiare libreria ed utilizzare questa ftp4j - a pure Java FTP client library , ma sinceramente non mi va di modificare tutto il codice, intanto credo che il problema rimanga, con questa libreria mi trovo bene,sono riuscito a fare tutto...sono io che non capisco come mantenere la connessione attiva.


Post unito: 10 Marzo 2016, 02:48:59 CET
Credo di aver risolto mettendo la connessione nell'oncreate() di Application e passando alle activity solamente i vari metodi.
« Ultima modifica: 10 Marzo 2016, 02:48:59 CET da Laerte, Reason: Merged DoublePost »