Question

I recently just started on Android Application development. My application requires me to connect to a MySQL database. Therefore I'm using a FTP server to store my PHP files. In order to access the database, the application on the android phone has to be connected to the FTP server.

I'm trying to connect to the ftp server, however the app throws:

java.lang.IllegalStateException:Scheme 'ftp' not registered

package com.example.login2;

import java.util.ArrayList;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import android.util.Log;
import org.apache.commons.net.ftp.*;


public class login2 extends Activity {
EditText un,pw;
TextView error;
Button ok;
public boolean mConnect;
public FTPClient mFTPClient = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    un=(EditText)findViewById(R.id.et_un);
    pw=(EditText)findViewById(R.id.et_pw);
    ok=(Button)findViewById(R.id.btn_login);
    error=(TextView)findViewById(R.id.tv_error);

    ok.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            mConnect = ftpConnect("ftp.example.comule.com", "name","passwordxxx", 21);
            ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
            postParameters.add(new BasicNameValuePair("username", un.getText().toString()));
            postParameters.add(new BasicNameValuePair("password", pw.getText().toString()));
            //String valid = "1";
            String response = null;
            try {
                response = CustomHttpClient.executeHttpPost("ftp://a5021174@matthewkee.comule.com/footprint/login.php", postParameters);
                String res=response.toString();
               // res = res.trim();
                res= res.replaceAll("\\s+","");                              
                //error.setText(res);

               if(res.equals("1"))
                    error.setText("Correct Username or Password");
                else
                    error.setText("Sorry!! Incorrect Username or Password"); 
            } catch (Exception e) {
                un.setText(e.toString());
            }
        }
    });
}

public boolean ftpConnect(String host, String username, String password, int port)
{
    try {
        mFTPClient = new FTPClient();
        // connecting to the host
        try{
            mFTPClient.connect(host, port);
        }catch(Exception e)
        {
            Toast toast1 = Toast.makeText(getApplicationContext(), "This is the exception thrown: "+e, 1000000);
            toast1.show();
        }

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

        //toast.show();

        /* Set File Transfer Mode
        *
        * To avoid corruption issue you must specified a correct
        * transfer mode, such as ASCII_FILE_TYPE, BINARY_FILE_TYPE,
        * EBCDIC_FILE_TYPE .etc. Here, I use BINARY_FILE_TYPE
        * for transferring text, image, and compressed files.
        */
        mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
        mFTPClient.enterLocalPassiveMode();

        return status;
    }
    } catch(Exception e) {
         Log.d("ftpConnectApp", "Error: could not connect to host " + host);
    }
    return false;
    }

}

Was it helpful?

Solution

You are trying to do a Http request using HttpPost class on a FTP server. Try using classic Url connection to your FTP server, it should solve your issue. I found you 2 tutorials to give you some pointers :

File upload
How to upload a file using FTP

OTHER TIPS

I guess there's some thing missing. try conneting to your database server directly or through php pages executing on a http server.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top