2012-06-11 103 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瀏覽器連接到這個網站。