Загрузка файла Android на FTP-сервер вызывает исключение IllegalStateException - PullRequest
0 голосов
/ 30 января 2012

Я недавно только начал разработку приложений для Android. Мое приложение требует от меня подключения к базе данных MySQL. Поэтому я использую FTP-сервер для хранения своих файлов PHP. Для доступа к базе данных приложение на телефоне Android должно быть подключено к FTP-серверу.

Я пытаюсь подключиться к серверу ftp, но приложение выдает:

java.lang.IllegalStateException: схема 'ftp' не зарегистрирована

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;
    }

}

Ответы [ 2 ]

0 голосов
/ 30 января 2012

Вы пытаетесь выполнить запрос Http с использованием класса HttpPost на сервере FTP .Попробуйте использовать классическое URL-соединение с вашим FTP-сервером, оно должно решить вашу проблему.Я нашел вам 2 урока, чтобы дать вам несколько указателей:

Загрузка файла
Как загрузить файл с помощью FTP

0 голосов
/ 30 января 2012

Я думаю, что чего-то не хватает.попробуйте подключиться к серверу базы данных напрямую или через php-страницы, выполняющиеся на http-сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...