2012-06-11 100 views
0

我检查了其他答案,他们没有帮我解决这个错误。也许我在做别的事情。无法连接到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连接到互联网。

+0

嗨 - 我从来没有为Android开发的,但我谷歌-d该异常外的好奇心和它说,你不能从你的主做网络业务(如FTP)线程并且必须从子线程完成它们。你在做那个吗? - http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html –

+0

这是问题:)昨天修复了它。 – Asim

回答

1

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

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

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

0

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