現在、ローカル FTP サーバーに接続する必要がある Android アプリケーションを開発しています (Filezilla サーバーを使用しています)。org.commons.apache.net ftp ライブラリをダウンロードしました。
私のAndroidプロジェクトに関連するコードは次のとおりです。
FTPClient mFTPClient = new FTPClient();
try {
mFTPClient = new FTPClient();
mFTPClient.connect("10.0.2.2", 21);
if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
mFTPClient.login("lucas", "elie");
mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
mFTPClient.enterLocalPassiveMode();
}
} catch (SocketException e) {
Log.e("TEST", "SocketException: " + e.getStackTrace().toString() + " " + e.getMessage());
} catch (UnknownHostException e) {
Log.e("TEST", "UnknownHostException: " + e.getStackTrace().toString() + " " + e.getMessage());
} catch (IOException e) {
Log.e("TEST", "IOException: " + e.getStackTrace().toString() + " " + e.getMessage());
}
//
FileOutputStream desFileStream;
try {
desFileStream = new FileOutputStream("/mnt/sdcard/sample_0.jpg");
mFTPClient.retrieveFile("/sample_0.jpg", desFileStream);
desFileStream.close();
} catch (FileNotFoundException e) {
Log.e("TEST", "FileNotFoundException: " + e.getStackTrace().toString() + " " + e.getMessage());
} catch (IOException e) {
Log.e("TEST", "IOException: " + e.getStackTrace().toString() + " " + e.getMessage());
}
接続は機能しています (mFTPClient.connect("10.0.2.2", 21);)、ローカル サーバー インターフェイスで確認できますが、ファイルをダウンロードしようとすると (mFTPClient.retrieveFile("/sample_0. jpg"、desFileStream);)、私は Logcat で IOException を取得しています:
04-07 11:25:26.300: E/TEST(671): IOException: [Ljava.lang.StackTraceElement;@412ca688 は /127.0.0.1 (ポート 2832) への接続に失敗しました: 接続に失敗しました: ECONNREFUSED (接続が拒否されました)
Android マニフェスト XML ファイルに次の 2 行を追加しました。
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
まったく同じコードを使用しますが、Android プロジェクトではなく従来の Java プロジェクトでは、すべて問題なく動作します (10.0.2.2 を 127.0.0.1 に、"/mnt/sdcard" を "C:\" に置き換えます) !
誰か助けてくれませんか?
編集:間違いを見つけました。それが誰かを助けることができるなら、10.0.2.2をローカルIPアドレス(私の場合は192.168.0.5)に置き換えるだけでした