我试图调用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代码= 256“无法打开文件。”的UserInfo = {NSURL = FTP:/ XXXX:XXX @ 2011 @ ftp.xxx.com:21 /}。
请给我任何解决方案来解决这个问题。
问题是密码中的简单@
。这意味着ftp://xxxx:xxx@[email protected]:21/
被解释为使用用户名[email protected]
和密码xxxx
连接到服务器xxx
,这显然是错误的。
解决方案应该是将特殊字符@
URL编码为%40
,即使用URL
ftp://xxx:xxx%[email protected]:21/