Alamofire:遵循HTTP重定向(或不)

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请求(不)遵循重定向的正确方法是什么?

Jon*_*rsh 10

由于另一个拉动请求,灵活的重定向处理现在在Alamofire中,并且可以与Alamofire一起使用1.2.0.


onm*_*133 7

你可以像这样使用它

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

仅对默认和短暂会话中的任务调用此方法.后台会话中的任务会自动遵循重定向.

也很好阅读基本面处理重定向和其他请求更改