2011-12-13 2 views
3

java의 FTP 프로토콜을 사용하여 서버에서 파일을 다운로드하려고합니다. 다음 URL을 사용하여 서버 & 다운로드 파일에 연결할 수 있습니다. ftp 프로토콜을 사용하여 암호에 "@"기호가 포함 된 서버에 연결

URL url = new URL("ftp://"+user+":"+password+"@"+host+"/"+remoteFile+";type=i"); 

하지만 내 암호는 "@"(예 : 2011 @ 소프트)가 포함되어있는 경우는 다음과 같은 예외가 발생 기호 : 모두 "@"기호를 구별 할 수 없습니다

java.net.UnknownHostException: [email protected] 

합니다.

이 문제를 어떻게 피할 수 있습니까? 이 문제를 피하기 위해 어떤 이스케이프 문자를 사용할 수 있습니까?

+0

'user : passwor \ @ d '가 작동하지 않는다면? – Alex

답변

5

URI encoding 암호 (물론 사용자 이름도 가능)는 잘 작동해야합니다.

URL url = new URL("ftp://" + 
        URLEncoder.encode(user, "UTF-8") + ":" + 
        URLEncoder.encode(password, "UTF-8") + "@" + 
        host + "/" + remoteFile + ";type=i"); 
+0

구스타프 대단히 감사합니다. 잘 작동합니다. – sankar

+0

URLEncoder.encode는 더 이상 사용되지 않습니다. – mateuszb

+0

@mateuszb'encode (String)'은 더 이상 사용되지 않지만'encode (String, String)'은 – gustafc

1

시도 대신에 URI를 사용

final URI ftpURI = new URI("ftp", "[email protected]", host, 22, remoteFile, null, null); 

그런 다음 사용

ftpURI.toURL() 

이 일반적으로 예상되는 무엇을 제공해야합니다.

+0

이 아닙니다. kristen – sankar

관련 문제