0

最近、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;
    }

}

4

2 に答える 2

0

足りないものがあると思います。データベースサーバーに直接接続するか、httpサーバーで実行されているphpページを介して接続してみてください。

于 2012-01-30T09:49:46.163 に答える
0

FTPサーバーでクラスを使用してHttp要求を実行しようとしています。FTP サーバーへの従来の URL 接続を使用してみてください。問題が解決するはずです。私はあなたにいくつかの指針を与えるためにあなたに2つのチュートリアルを見つけました: HttpPost

ファイルのアップロード
FTP を使用してファイルをアップロードする方法

于 2012-01-30T09:53:49.690 に答える