swift中對AFNetWorking的簡單封裝
廢話不多說.直接上程式碼.拿來就能用
import UIKit
import AFNetworking
// 列舉
enum RequestMethod: String{
case GET = "GET"
case POST = "POST"
}
class SinaHTTPClient: AFHTTPSessionManager {
static let shareInstance: SinaHTTPClient = {
let client = SinaHTTPClient()
// 有可能設定一些東西
// client.responseSerializer.acceptableContentTypes?.insert("")
return client
}()
// 封裝一個方法,通過一個 列舉來區分一下我們的 get/post
// 2 . 其他引數
func reqeust(method: RequestMethod,urlString: String,params: [String: AnyObject]?,success:((NSURLSessionDataTask, AnyObject?) -> ())?,failure:((NSURLSessionDataTask?, NSError) -> ())?){
if method == .GET {
self.GET(urlString, parameters: params, success: success, failure: failure)
} else if method == .POST {
self.POST(urlString, parameters: params, success: success, failure: failure)
}
}
//進一步封裝
func reqeust(method: RequestMethod,urlString: String,params: [String: AnyObject]?,success:((json:[String: AnyObject]?) -> Void),failure:((error:NSError) -> Void)){
let successBlock = { (task:NSURLSessionDataTask, json:AnyObject?) -> Void in
// 成功之後調不呼叫這裡????
// 2
print(json)
let dic = json as? [String: AnyObject]
}
let failurBlock = { (task:NSURLSessionDataTask?, error:NSError) -> Void in
print(error)
}
if method == .GET {
self.GET(urlString, parameters: params, success: successBlock, failure: failurBlock)
} else if method == .POST {
self.POST(urlString, parameters: params, success: successBlock, failure: failurBlock)
}
}
func upload(urlString: String,imageData: NSData,params: [String: AnyObject]?,success:((json:[String: AnyObject]?) -> Void),failure:((error:NSError) -> Void)){
self.POST(urlString, parameters: params, constructingBodyWithBlock: { (formdata) -> Void in
//回想一下
formdata.appendPartWithFileData(imageData, name: "pic", fileName: "xxxyyy", mimeType: "image/jpeg")
}, success: { (_ , JSON) -> Void in
printLog(JSON)
success(json: JSON as? [String: AnyObject])
}) { (_ , error ) -> Void in
printLog(error)
failure(error: error)
}
}
}