Ios Swift 4-使用正斜杠设置密码

Ios Swift 4-使用正斜杠设置密码,ios,swift,Ios,Swift,我正在使用NSURLComponents并设置用户名和密码: let urlComponents = NSURLComponents(string: webservice); urlComponents?.user = username; urlComponents?.password = password; 我使用的密码中有一个特殊字符(正斜杠/) 我已确认输入的密码正确无误,并且我正在尝试使用的所有其他密码都正确无误,但包含此/的密码除外 我必须摆脱这个特殊角色吗 以下是完整的方法: fu

我正在使用NSURLComponents并设置用户名和密码:

let urlComponents = NSURLComponents(string: webservice);
urlComponents?.user = username;
urlComponents?.password = password;
我使用的密码中有一个特殊字符(正斜杠/)

我已确认输入的密码正确无误,并且我正在尝试使用的所有其他密码都正确无误,但包含此/的密码除外

我必须摆脱这个特殊角色吗

以下是完整的方法:

func loginUser(_ username: String, password: String, completion: @escaping (_ result: Bool) -> Void)
    {

        let urlComponents = NSURLComponents(string: webservice);
        urlComponents?.user = username;
        urlComponents?.password = password

        let url = urlComponents?.url;

        URLSession.shared.dataTask(with: url!, completionHandler: {
            (data, response, error) in

            if(error != nil){

                completion(false)

            }else{

                do{

                    let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String : AnyObject]


                    OperationQueue.main.addOperation({

                        self.appDelegate.communityArray = json

                        //Get Community Descrtiptions and add them to appDelegates communityDescriptionArray


                        self.getCommunities() { (result: Dictionary<String, Dictionary<String, Any>>) in

                            self.appDelegate.communityList = result

                            completion(true)

                        }

                    })

                }catch let error as NSError{

                    print(error)
                    completion(false)

                }
            }

        }).resume()

    }
我得到的错误是:

错误域=NSCOCAERRORDOMAIN Code=3840“周围的值无效 字符0。“UserInfo={NSDebugDescription=周围的值无效。” 字符0}


您不应将密码作为URL的一部分传递。URL以明文形式发送到上游DNS服务器


而且,不清楚你想做什么。“@”符号和“/”字符在URL中不是合法字符。“/”是合法的,但它是一个路径分隔符。

检查
打印(urlComponents!.string!)
–正斜杠应该自动转义。问题可能在其他地方。@Rob:
var urlc=URLComponents(字符串:http://myhost.com")!; urlc.user=“user”;urlc.password=“pass/word”;打印(urlc.string!)
打印
http://user:pass%2Fword@myhost.com
我确实打印了(urlComponents!.string!),实际上它有%2F而不是/@MartinR-非常正确。我的错。我考虑的是URL中的键/值对,而不是
用户
/
密码
值。因此,显然服务器返回了一些不是JSON的内容–可能是错误消息?打印
字符串(数据:data!,编码:.utf8)
以查看服务器响应。
let json = try JSONSerialization.jsonObject(with: data!, options:.allowFragments) as! [String : AnyObject]