2011-08-10 8 views
0

ftp 서버에서 파일의 데이터를 읽으려고합니다. 이 코드 조각은 내 데스크톱 컴퓨터에서 실행할 때 Java에서 완벽하게 작동합니다. 나는 안드로이드에 같은 코드를 복사하고 예외가 생겼다. 예외는 다음과 같습니다android에서 ftp 파일을 읽을 수 없습니까?

때 java.io.IOException : 서버에 연결할 수 없습니다 : 550

내가 같은 코드가 자바 perfecty 작업하는 경우가 발생하는 이유를 전혀 몰라 : 파일을 검색 할 수 없습니다. 자바 코드는 다음과 같습니다

String s = "ftp://username:[email protected]:21/sg1996text.txt;type=i"; 
    URL u; 
    String f=""; 
    try { 
     u = new URL(s); 
     URLConnection uc=u.openConnection(); 
     BufferedInputStream bis=new BufferedInputStream(uc.getInputStream()); //This is where exception i raised. 
     System.out.println("IS opened"); 
     int i; 
     while((i=bis.read())!=-1) 
      f=f+(char)i; 
     System.out.println("File Read"); 
    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

나는 동일한 오류가 발생하는 simular 문제가 있습니다. –

+0

비슷한 질문 : http://stackoverflow.com/questions/7053513/howto-do-a-simple-ftp-get-file-on-android –

답변

1

제거 : 당신의 URL에서

;type=i 

:

String s = "ftp://username:[email protected]:21/sg1996text.txt;type=i"; 

그것은 내 응용 프로그램에서 작동합니다.

0

오류 550 일반적으로은 "사용 권한 오류"를 의미하므로 가장 가능성있는 원인은 사용자 이름/암호 불일치 (사례 # 3 참조)입니다.

그러나 동일한 코드가 바탕 화면에서 작동하는 경우 사용자 이름과 암호가 정확해야합니다. 내가 볼 수있는 가능성은 다음과 같습니다.

  • 사용중인 패키지가 데스크톱과 Android에서 동일하지 않으며 Android 버전이 사용자 이름/비밀번호를 올바르게 구문 분석하지 않습니다. FTP 트래픽을 스니핑하거나 FTP 서버 주소를 제어하는 ​​FTP 서버 (바탕 화면에 임시로 배포 할 수 있음)로 변경하고 사용자 이름과 비밀번호가 올바르게 전송되는지 확인하십시오.
  • DNS 오류가 발생하여 데스크톱 (또는 Android)이 ftp.mysite.x10.mx에 연결되어 있지 않지만 다른 곳에 있습니다. localhost에서의 개발 설치 (한 번했는데 알아낼 시간이 필요했습니다). 서버 이름을 IP 주소로 변경하십시오.
  • 케이스 (1)과 같지만 구문 분석 오류는 데스크톱 패키지가 인식하는 동안 안드로이드 패키지가 인식하지 못하는 TYPE I 사양 ("; type = i"URL 끝에 있음)으로 인해 발생합니다. 550 오류가 아니라 500 오류를 제공해야합니다. 은 오류 550을 사용하여 파일을 찾지 못했음을 나타내며입니다. 원하는 파일이 'sig1996text.txt'대신 'sg1996text.txt; type = i'라고 패키지에 있다고 생각합니다. '; type = i'를 제거하고 무슨 일이 일어나는 지보십시오.
관련 문제