这是基本的标头代码:
let userName = "userName"
let userPassword = "{"pass":password}"
loginString = String(format: "%@:%@", userName, userPassword)
let loginData = loginString.data(using: String.Encoding.utf8)!
let base64LoginData = loginData.base64EncodedString()
let url = URL(string: "https://mysight.ru/authorize")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.setValue("Basic \(base64LoginData)", forHTTPHeaderField: "Authorization")
let configuration = URLSessionConfiguration.default
let session = URLSession(configuration: configuration)
let task = session.dataTask(with: request as URLRequest) { (data, response, error) in
self.data = data
self.response = response as? HTTPURLResponse
self.error = error
if (response as? HTTPURLResponse) != nil {
let myHttpResponse = response as! HTTPURLResponse
let statusCode = myHttpResponse.statusCode
switch (statusCode) {
case 200:
print("Get UserTokens Processing StatusCode=200")
case 401:
print("User Unauthorized")
case 500:
print("Get UserTokens Processing StatusCode=500")
default:
print("Get UserTokens Processing StatusCode=Unknown")
}
}
self.isFinished = true
}
task.resume()
}
如果密码仅包含字母和数字 - 一切正常,状态 200,如果密码中的 # 符号 - 立即出现错误:状态 401:用户未授权
我知道问题出在#字符的传输中,但我不明白如何解决这个问题。如果有人遇到,请帮助。
结果证明是平庸的:行中缺少引号 let userPassword = "{"pass":password}" let userPassword = "{"pass":"password"}"
因此,在立即修复所有工作后,JSON 字符串在存在特殊字符的情况下被错误地转换为 String :)))