在Alamofire 5中,sessionDidReceiveChallenge
方法已被移除。相反,你可以使用新的RequestInterceptor
协议来处理身份验证挑战。
下面是一个示例:
首先,创建一个遵循RequestInterceptor
协议的自定义拦截器类,实现adapt(_:for:)
方法:
class MyRequestInterceptor: RequestInterceptor {
func adapt(_ urlRequest: URLRequest, for session: Session, completion: @escaping (Result) -> Void) {
// 可以在这里对请求进行修改,比如添加授权头部等
var adaptedRequest = urlRequest
adaptedRequest.setValue("Bearer token", forHTTPHeaderField: "Authorization")
completion(.success(adaptedRequest))
}
}
然后,在创建Session
对象时,将自定义拦截器分配给interceptor
属性:
let interceptor = MyRequestInterceptor()
let session = Session(interceptor: interceptor)
现在,你可以使用session
对象发起请求,拦截器将会在每个请求之前,自动对其进行适配。
session.request("https://api.example.com/data").response { response in
// 处理响应
}
在适配方法中,你可以根据需要进行更多的定制,比如处理身份验证挑战。