使用 Alamofire 的 Http 请求
Posted
技术标签:
【中文标题】使用 Alamofire 的 Http 请求【英文标题】:Http request using Alamofire 【发布时间】:2016-03-31 08:56:33 【问题描述】:我正在使用Alamofire 在我的应用程序中发送 HTTP 请求。我正在使用 TabBarViewController,在第一个视图的 ViewDidLoad 中,我发送了一个请求。同样在 ViewWillDisappear 中,我发送了另一个请求。但是,当我更改选项卡时,我发现它的行为出乎意料。
func sendHttpCommand(parameter: NSDictionary)
Alamofire.request(.GET, URL, parameters: (parameter as! [String: AnyObject]))
.response
request, response, data, error in
print(request)
viewDidLoad()
let dict: NSDictionary = ["value": 0]
sendHttpCommand(dict)
viewWillDisappear(animated: Bool)
let dict: NSDictionary = ["value": 1]
sendHttpCommand(dict)
当我切换标签时,NORMAL CASE,我的控制台会打印出来
Optional(NSMutableURLRequest URL: xxxxx/value=0)
Optional(NSMutableURLRequest URL: xxxxx/value=1)
Optional(NSMutableURLRequest URL: xxxxx/value=0)
Optional(NSMutableURLRequest URL: xxxxx/value=1)
Optional(NSMutableURLRequest URL: xxxxx/value=0)
Optional(NSMutableURLRequest URL: xxxxx/value=1)
Optional(NSMutableURLRequest URL: xxxxx/value=0)
Optional(NSMutableURLRequest URL: xxxxx/value=1)
但是,当我足够快切换标签时,我的控制台会打印出来
Optional(NSMutableURLRequest URL: xxxxx/value=0)
Optional(NSMutableURLRequest URL: xxxxx/value=1)
Optional(NSMutableURLRequest URL: xxxxx/value=1)
Optional(NSMutableURLRequest URL: xxxxx/value=0)
Optional(NSMutableURLRequest URL: xxxxx/value=0)
Optional(NSMutableURLRequest URL: xxxxx/value=1)
Optional(NSMutableURLRequest URL: xxxxx/value=1)
Optional(NSMutableURLRequest URL: xxxxx/value=0)
有什么想法吗?
【问题讨论】:
【参考方案1】:alamofire 请求是异步执行的。
阅读此处以了解异步和同步: Difference between dispatch_async and dispatch_sync on serial queue?
当您更改标签并且请求未完成时,您可以取消您的 alamofire 请求。为此,您需要一个 Alamofire 管理器。
【讨论】:
如何按顺序提出请求?我尝试使用dispatch_group
。但是,我似乎没有工作。 link
您必须在响应处理程序中调用下一个请求。或者使用委托并在您的响应处理程序中触发它以启动下一个请求。如果用户更改标签***.com/questions/26305707/…,您也可以取消您的请求以上是关于使用 Alamofire 的 Http 请求的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift4 中使用 Rxalamofire 发送 URL 请求
如何使用 Alamofire 为 http 请求编写单元测试?