Alamofire 中的基本身份验证标头
Posted
技术标签:
【中文标题】Alamofire 中的基本身份验证标头【英文标题】:Basic auth header in Alamofire 【发布时间】:2017-05-07 16:15:40 【问题描述】:我有一个受保护的 api,我得到了它的用户名和密码。当我使用 Postman 时,我选择“基本身份验证”类型,并且在正文中我有参数,例如用户登录信息。它工作得很好。
但是,我尝试用 Alamofire 做同样的事情,但我无法获得正确的 JSON 返回。这是我所做的:
// user auth
let param = ["mobile":"3", "password":"100200"]
let urlStr = "http://MyApi.com/api/login"
let url = URL(string: urlStr)
// api auth
let user = "apiUserName"
let password = "ApiAuthPassword"
var headers: HTTPHeaders = ["mobile":"001",
"password":"1111"]
if let authorizationHeader = Request.authorizationHeader(user: user, password: password)
headers[authorizationHeader.key] = authorizationHeader.value
Alamofire.request(url!, headers: headers)
.responseJSON response in
print(response.result.value)
if let value: AnyObject = response.result.value as AnyObject?
//Handle the results as JSON
print(value)
let usertoken = JSON(value)
print(usertoken)
这将返回零。有人可以帮助我如何使用 Alamofire 执行 Postman 方法。谢谢!
【问题讨论】:
【参考方案1】:let user = "your username"
let password = "your password"
let credentialData = "\(user):\(password)".data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
let base64Credentials = credentialData.base64EncodedString()
let headers = [
"Authorization": "Basic \(base64Credentials)",
"Accept": "application/json",
"Content-Type": "application/json" ]
//put slash before \ (base64Credentials)
Alamofire.request("place your url", method: .get, parameters: nil,encoding: URLEncoding.default, headers: headers) .responseJSON response in
switch response.result
case .success(_):
//your success code
case .failure(_):
//your failure code
【讨论】:
不知道你为什么要自己使用创建这个base64EncodedString。 Alamofire 对这里所做的事情有自己的实现。只需传递您的用户名和密码,它将创建一个基本的身份验证 HTTP 标头。HTTPHeader.authorization(username: username, password: password)
。然后将其传递到您的标题中。
请分享 swift 5 的语法(alamofire 的最新版本)以上是关于Alamofire 中的基本身份验证标头的主要内容,如果未能解决你的问题,请参考以下文章
从 Spring Boot 中的基本身份验证中删除 WWW-authenticate 标头
经过身份验证的 http 请求 swift Alamofire