gpt4 book ai didi

swift - Alamofire 中需要与 HttpURLConnection Android 中类似的选项来 setRequestProperty

转载 作者:行者123 更新时间:2023-11-30 13:18:36 31 4
gpt4 key购买 nike

我正在努力将授权 token 设置为 Alamofire Swift 中的连接请求属性。

我尝试在 header 中发送身份验证 token 并能够实现这一目标。

在android中,我们将身份验证 token 设置为HttpUrlConnectionsetRequestProperty并且API工作正常,但在Swift中我必须使用相同的API,但在 header 中发送身份验证 token 是没有帮忙。

我尝试过的选项:-

  1. 创建 MutableURlRequest 并设置 HTTPAdditionalHeaders

  2. var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:] 让配置 = NSURLSessionConfiguration.defaultSessionConfiguration() 配置.HTTPAdditionalHeaders = defaultHeaders

请任何人帮助我将身份验证 token 作为请求属性而不是 header 发送。

提前致谢。

最佳答案

您可以将授权 token 与其他请求的参数一起发送,如下所示:

private var parameters: [String: AnyObject]? {
switch self {
case Profile(let token, ...):
return ["authCode" : token, ...]
...
}
}

但是建议作为 header 发送,因此仅供注意,这就是我的做法:

import Alamofire

// Helper to build Alamofire Requests

enum APIRouter {

static let baseURL = "http://..."

case Authorize(token: String)
...

}

extension APIRouter: URLRequestConvertible {

var URLRequest: NSMutableURLRequest {
let URLRequest = NSMutableURLRequest(URL: URL)
URLRequest.HTTPMethod = method.rawValue

// Server token is set after authorisation and will be applied to the following requests
if let token = SecureManager.sharedInstance.serverToken {
URLRequest.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization")
}

let encoding = Alamofire.ParameterEncoding.URL
let request = encoding.encode(URLRequest, parameters: parameters).0
return request
}

private var URL: NSURL {
let baseURL = NSURL(string: APIRouter.baseURL)
return baseURL!.URLByAppendingPathComponent(path)
}

private var path: String {
switch self {
case Authorize:
return "rest/oauth/authorize"
...
}
}

private var method: Alamofire.Method {
switch self {
case Authorize:
return .POST
...
}
}

private var parameters: [String: AnyObject]? {
switch self {
...
}
}

}

关于swift - Alamofire 中需要与 HttpURLConnection Android 中类似的选项来 setRequestProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37987313/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com