Jon*_*rsh 25 redirect ios swift alamofire
我正在尝试将Alamofire配置为按请求跟踪重定向(或不重定向).
Alamofire有一个私有内部类SessionDelegate,用作NSURLSessionTaskDelegate当前URL会话.SessionDelegate确实实现了相关的委托方法,URLSession(session:, task:, willPerformHTTPRedirection response:, request:, completionHandler:)这正是我想要的.
更好的是,委托的实现参考了一个自定义变量闭包,命名taskWillPerformHTTPRedirection为确定如何处理重定向 - 再次,正是我想要的!
据我所知,该关闭始终nil是默认的 - 它不是由Alamofire内部分配的 - 这表明它旨在让用户为其分配一个闭包.
问题:我无法访问此私有SessionDelegate类来为其taskWillPerformHTTPRedirection变量分配闭包.它是一个私有类,我的Swift文件不可见.配置Alamofire请求(不)遵循重定向的正确方法是什么?
你可以像这样使用它
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
let sessionDelegate = Manager.SessionDelegate()
sessionDelegate.taskWillPerformHTTPRedirectionWithCompletion = {
(session: NSURLSession, task: NSURLSessionTask, response: NSHTTPURLResponse,
newRequest: NSURLRequest, completionHandler: NSURLRequest? -> Void) in
// do something
}
let manager = Manager(configuration: configuration, delegate: sessionDelegate)
Run Code Online (Sandbox Code Playgroud)
Alamofire Manager保持delegate强大,所以你可以肯定
public let delegate: SessionDelegate
Run Code Online (Sandbox Code Playgroud)
但请记住willPerformHTTPRedirection
仅对默认和短暂会话中的任务调用此方法.后台会话中的任务会自动遵循重定向.
也很好阅读基本面处理重定向和其他请求更改