import UIKit
import AFNetworking
import MBProgressHUD
import Toast
extension NSObject {
func GET(URLString:String, parameters:[String:AnyObject]?, showHUD:Bool = true, success:((AnyObject?) -> Void)?, failure:((NSError) -> Void)? ){
let manager = AFHTTPSessionManager()
manager.requestSerializer.timeoutInterval = 10
let keyWindow = UIApplication.sharedApplication().delegate!.window!
if showHUD {
MBProgressHUD.showHUDAddedTo(keyWindow, animated: true)
}
manager.GET(URLString, parameters: parameters, success: { (operation, responseObject) -> Void in
if showHUD {
MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
}
success?(responseObject)
}, failure: { (aFHTTPRequestOperation, error) -> Void in
if showHUD {
MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
keyWindow?.makeDefaultToast("网络异常,请检查网络")
}
failure?(error)
})
}
func POST(URLString:String, parameters:[String:AnyObject]?, showHUD:Bool = true, success:((AnyObject?) -> Void)?, failure:((NSError) -> Void)?){
let manager = AFHTTPSessionManager()
manager.requestSerializer.timeoutInterval = 10
let keyWindow = UIApplication.sharedApplication().keyWindow
if showHUD {
MBProgressHUD.showHUDAddedTo(keyWindow, animated: true)
}
manager.POST(URLString, parameters: parameters, success: { (operation, responseObject) -> Void in
if showHUD {
MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
}
success?(responseObject)
}, failure: { (aFHTTPRequestOperation, error) -> Void in
if showHUD {
MBProgressHUD.hideAllHUDsForView(keyWindow, animated: true)
keyWindow?.makeDefaultToast("网络异常,请检查网络")
}
failure?(error)
})
}
}
extension UIView {
func makeDefaultToast(message:String) {
makeToast(message, duration: 2, position: CSToastPositionCenter)
}
}
方法的参数
- URLString: 请求的URL地址字符串
- parameters: 参数Dictionary,可选类型说明可以传递nil;Dictionary的key是字符串类型,value是AnyObject,表示可以传递任何Swift基本数据类型.
- showHUD: 不传递这个参数,它的默认值会是true,表示请求时候会弹出MBProgressHUD蒙层,禁止用户进行别的操作,false表示是在后台默默的进行网络请求,用户察觉不到.
- success: 可选类型, 请求成功的回调闭包,闭包的参数是AnyObject?,表示请求成功返回的数据
- failure: 可选类型, 请求失败的回调闭包,闭包的参数是NSError, 需要函数调用者自己处理异常.