Подключение к серверу, пароль которого содержит символы «@» по протоколу ftp - PullRequest
3 голосов
/ 13 декабря 2011

Я пытаюсь загрузить файлы с сервера, используя протокол FTP в Java. Используя следующий URL, я могу подключиться к серверу и загрузить файлы.

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

Но когда мой пароль содержит символ "@" (например: soft @ 2011), он выдает следующее исключение:

  java.net.UnknownHostException: 2010@192.168.1.100 

Невозможно различить оба символа "@".

Как мне избежать этой проблемы? Могу ли я использовать любые escape-символы, чтобы избежать этой проблемы?

Ответы [ 2 ]

5 голосов
/ 13 декабря 2011

URI-кодировка пароль (и желательно имя пользователя) должен работать просто отлично.

URL url = new URL("ftp://" + 
                  URLEncoder.encode(user, "UTF-8") + ":" + 
                  URLEncoder.encode(password, "UTF-8") + "@" + 
                  host + "/" + remoteFile + ";type=i");
1 голос
/ 13 декабря 2011

Попробуйте использовать вместо этого URI:

final URI ftpURI = new URI("ftp", "user@pass", host, 22, remoteFile, null, null);

Затем используйте:

ftpURI.toURL()

Обычно это должно дать вам то, что ожидается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...