【问题标题】:Basic auth header in AlamofireAlamofire 中的基本身份验证标头
【发布时间】: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 方法。谢谢!

【问题讨论】:

    标签: json swift authentication alamofire


    【解决方案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 的最新版本)
    猜你喜欢
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2015-05-05
    • 2014-07-29
    • 2018-01-13
    • 1970-01-01
    相关资源
    最近更新 更多