2012-06-11 6 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(); 
    } 
} 

:

여기 내 코드입니다. 로그 캣은 이러한 오류를 보여줍니다

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 

내가 와이파이 통해 인터넷에 연결되어있어합니다.

+0

안녕 - 나는 안드로이드 용으로 개발 없지만 적이 난 당신이 메인에서 (FTP 등), 네트워크 운영을 할 수 없다는 예외-호기심 아웃 구글-D 스레드가 있어야하며이를 하위 스레드에서 수행해야합니다. 그거하고 있니? - 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가 올바르게 작동하는지 확인하십시오. 예를 들어, 안드로이드 브라우저를 통해이 사이트에 연결할 수 있는지 확인하십시오.

관련 문제