Android FTP:无法连接到服务器

时间:2016-08-07 12:55:50

标签: android ftp server connect

我正在尝试为自己实现一个小的Android应用程序,它应该从我的Android设备上传文件到ftp服务器。 虽然我努力了,但我无法弄清楚问题出在哪里。

TIA,Lizzie

这是我的主要功能(我试过各种服务器IP ......):

package com.uploadtonas_03;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String server = "****";
    int port = 21;
    String user = "***";
    String pass = "***";
    FTPClient ftpClient = new FTPClient();

    try {
    ftpClient.connect(server, port);
    ftpClient.enterLocalPassiveMode(); // important!
    showServerReply(ftpClient);
    int replyCode = ftpClient.getReplyCode();
    if (!FTPReply.isPositiveCompletion(replyCode)) {
        System.out.println("Operation failed. Server reply code: " + replyCode);
        return;
    }
    boolean success = ftpClient.login(user, pass);
    showServerReply(ftpClient);
    if (!success) {
        System.out.println("Could not login to the server");
        return;
    } else {
        System.out.println("LOGGED IN SERVER");
    }
    } catch (java.io.IOException ex) {
        System.out.println("Oops! Something wrong happened");
        ex.printStackTrace();
    }
}
private static void showServerReply(FTPClient ftpClient) {
    String[] replies = ftpClient.getReplyStrings();
    if (replies != null && replies.length > 0) {
        for (String aReply : replies) {
            System.out.println("SERVER: " + aReply);

我在manifest.xml中添加了相应的权限

    <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

并收到以下错误:

08-07 14:39:07.230 31520-31520/com.uploadtonas_03 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.uploadtonas_03/com.uploadtonas_03.MainActivity}: android.os.NetworkOnMainThreadException
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2250)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2300)
                                                                                   at android.app.ActivityThread.access$600(ActivityThread.java:144)
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1295)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                                   at android.os.Looper.loop(Looper.java:150)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5162)
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                   at java.lang.reflect.Method.invoke(Method.java:525)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:744)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
                                                                                   at dalvik.system.NativeStart.main(Native Method)
                                                                                Caused by: android.os.NetworkOnMainThreadException
                                                                                   at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1133)
                                                                                   at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
                                                                                   at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
                                                                                   at java.net.InetAddress.getByName(InetAddress.java:289)
                                                                                   at org.apache.commons.net.SocketClient.connect(SocketClient.java:209)
                                                                                   at com.uploadtonas_03.MainActivity.onCreate(MainActivity.java:24)
                                                                                   at android.app.Activity.performCreate(Activity.java:5133)
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2214)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2300) 
                                                                                   at android.app.ActivityThread.access$600(ActivityThread.java:144) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1295) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                                   at android.os.Looper.loop(Looper.java:150) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:5162) 
                                                                                   at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                   at java.lang.reflect.Method.invoke(Method.java:525) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:744) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
                                                                                   at dalvik.system.NativeStart.main(Native Method) 

0 个答案:

没有答案