如何使用Alamofire网络框架为每个请求添加Authorization标头,并检查响应是否来自服务器401,以便我可以相应地执行逻辑,并提供某种登录视图。
我是否需要创建一种包含Alamofire请求的HttpService类?还是有更内置的方式?
根据你的要求,我个人更喜欢有一个中级类来调用Alamofire的方法。
为此,您可以在每个Web服务调用上添加auth标头。
以下是中级类的示例。
class WebClient: SessionManager {
static let sharedManager = WebClient()
func responseRequest(_ url: String, method: Alamofire.HTTPMethod, parameter: Parameters? = nil, encoding: ParameterEncoding, header: HTTPHeaders? = nil, completionHandler: @escaping (DefaultDataResponse) -> Void) -> Void {
self.request(url, method: method, parameters: parameter, encoding: encoding, headers: header).response { response in
completionHandler(response)
}
} }
您可以根据需要修改上面的类,也可以直接在每个Web服务调用的请求方法中传递头。
添加HTTP Basic Auth的授权标头并检查状态代码非常简单:
Alamofire
.request(...)
.authenticate(user: "username", password: "password")
.response { response in
if let status = response.response?.statusCode, status == 401 {
// got a 401 response
}
}