【发布时间】:2015-04-24 11:00:45
【问题描述】:
我正在寻找如何在请求 web api 时防止重定向响应(状态代码 3xx)的示例代码。我正在使用 Swift 和 Alamofire 1.2。 我试过了:
delegate.taskWillPerformHTTPRedirection = { (session: NSURLSession!, task: NSURLSessionTask!, response: NSHTTPURLResponse!, request: NSURLRequest!) in
return nil
}
但不工作
我也尝试过:https://github.com/Alamofire/Alamofire/pull/350/files 并将我自己的代码更改为:
var acc = self.txtAccount.text
var pwd = self.txtPassword.text
var url : String = "http://10.1.0.2:8081/wordpress/wp-json/users/me"
let delegate = Alamofire.Manager.sharedInstance.delegate
delegate.taskWillPerformHTTPRedirection = { (session: NSURLSession!, task: NSURLSessionTask!, response: NSHTTPURLResponse!, request: NSURLRequest!) in
var request = NSMutableURLRequest(URL: NSURL(string: url)!)
request.HTTPMethod = "GET"
var credential = "\(acc):\(pwd)"
var authData = credential.dataUsingEncoding(NSUTF8StringEncoding)
var encodedAuthData = authData?.base64EncodedStringWithOptions(nil)
var authValue = "Basic \(encodedAuthData!)"
request.setValue(authValue, forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.setValue("application/json", forHTTPHeaderField: "Accept")
return request
}
//I've implemented URLRequestConvertible 'Router'. it also have call the same above url
Alamofire.request(Router.Authorize(acc, pwd))
.response({(request, response, data, error) in
println(request)
})
但它不起作用,似乎变成了无限循环。我在查尔斯身上测试过。
【问题讨论】:
-
如果你把
println("Redirection is calling my closure")放在那个闭包里,你看到它被调用了吗?还是下断点? -
delegate如果你没有设置它可以为 nil