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请求。尝试使用经典的 Url 连接到您的 FTP 服务器,它应该可以解决您的问题。我找到了 2 个教程来给你一些指导: HttpPost

文件上传
如何使用 FTP 上传文件

于 2012-01-30T09:53:49.690 回答