无法连接到Android中的FTP

时间:2012-06-11 08:12:35

标签: java android ftp

我已经检查了其他答案,他们没有帮我解决这个错误。也许我做错了什么。

这是我的代码:

    void uploadPic() throws FileNotFoundException
{
    FileInputStream fis = new FileInputStream(path);
    FTPClient con = new FTPClient();
    int bytesAvailable;
    try
    {
        con.connect("ftp://ftp.drivehq.com/");
        Toast.makeText(this, "Connected to FTP", Toast.LENGTH_SHORT).show();
        if (con.login("x", "x"))
        {
            Toast.makeText(this, "Logged in", Toast.LENGTH_SHORT).show();
            con.enterLocalPassiveMode(); // Active mode doesn't really work on Android
            bytesAvailable = fis.available();
            byte[] barray = new byte[bytesAvailable];
            fis.read(barray);
            ByteArrayInputStream in = new ByteArrayInputStream(barray);
            boolean result = con.storeFile("/CameraUpload.jpg", in);
            in.close();
            if (result) Log.v("Upload Result", "Succeeded");
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

我已经为我的项目添加了INTERNET权限。 logcat显示了这些错误:

android.os.NetworkOnMainThreadException
W/System.err(17531):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
W/System.err(17531):    at java.net.InetAddress.lookupHostByName(InetAddress.java:391

我通过Wifi连接到互联网。

2 个答案:

答案 0 :(得分:1)

当您尝试从主线程执行网络操作(例如FTP)时,似乎会抛出该异常。出于性能原因,这是不允许的(因此在执行可能需要一段时间的操作时,应用程序似乎不会锁定用户)。假设您使用的是Honeycomb或更高版本,则需要将连接的代码移动到其自己的子线程中。

http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

http://developer.android.com/guide/practices/design/responsiveness.html

答案 1 :(得分:0)

最有可能的是,此错误表示您的设备无法将ftp.drivehq.com解析为其IP地址。我不能肯定地说,因为你只粘贴了部分错误日志。确保您具有网络连接并且DNS正常运行。例如,看看你是否可以通过Android浏览器连接到同一个站点。