Какое решение для "Файл не может быть открыт."UserInfo = {NSURL = FTP: / хххх: ххх @ 2011 @ ftp.xxx.com: 21 /}? - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь вызвать FTP-сервер API и хочу получить имя файла, когда API успешно.Ниже код, который я попытался для вызова API,

let host = "ftp.xxx.com"
        let user = "xxx"
        let password = "xxx@2011"
        let port = "21"

       let url = URL(string: "ftp://"+user+":"+password+"@"+host+":"+port+"/")
        var data: Data? = nil
        do {
            if let anUrl = url {
                data = try Data(contentsOf: anUrl)
                print(data!)
            }
        } catch {
            print("Unexpected error: \(error).")
        }

При запуске этого кода я получаю сообщение об ошибке типа

Ошибка домена = NSCocoaErrorDomain Code = 256 "Файл не может быть открыт«.UserInfo = {NSURL = ftp: / xxxx: xxx @ 2011 @ ftp.xxx.com: 21 / rout.

Пожалуйста, дайте мне какое-нибудь решение для решения этой проблемы.

1 Ответ

0 голосов
/ 18 февраля 2019

Проблема в том, что в пароле есть @.Это означает, что ftp://xxxx:xxx@2011@ftp.xxx.com:21/ интерпретируется как подключение к серверу 2011@ftp.xxx.com с именем пользователя xxxx и паролем xxx, что явно неверно.

Решение должно заключаться в URL-кодировании специального символа @%40, т.е. используйте URL

ftp://xxx:xxx%402011@ftp.xxx.com:21/
...