// // BLHttpSessionsRequest.swift // ALSFinancial-Swift // // Created by 冰泪 on 16/8/23. // Copyright ? 2016年 冰泪. All rights reserved. //网络请求类封装
import UIKit import Alamofire
//创建请求类枚举 enum RequestType: Int { case requestTypeGet case requestTypePost }
//创建一个闭包(注:oc中block) typealias sendVlesClosure = (AnyObject?,NSError?)->Void typealias uploadClosure = (AnyObject?,NSError?,Int64?,Int64?)->Void
class BLHttpSessionsRequest: NSObject { // --GET请求获取JSON数据 func BLGetJSONDataWithUrl(url: String,parameters: AnyObject,successed:(responSEObject: AnyObject?) -> (),failed: (error: NSError?) -> ()) { Alamofire.request(.GET,url,parameters: parameters as? [String : AnyObject]).responseJSON { (data: Response<AnyObject,NSError>) in if data.result.isSuccess { successed(responSEObject: data.data) }else { failed(error: data.result.error) } } } // --POST请求获取JSON数据 func BLPostJSONDataWithUrl(url: String,failed: (error: NSError?) -> ()) { //print(parameters) Alamofire.request(.POST,NSError>) in if data.result.isSuccess { successed(responSEObject: data.data) }else { failed(error: data.result.error) } } } // --文件上传 //fileURL实例:let fileURL = NSBundle.mainBundle().URLForResource("Default",withExtension: "png") func BLUpload(URLString:String,fileURL:NSURL,progress:(bytesWritten: Int64?,totalBytesWritten: Int64?,totalBytesExpectedToWrite: Int64?) -> Void,responseResult:(responseValue: AnyObject?,error: NSError?) -> Void) { Alamofire.upload(.POST,URLString,file: fileURL).progress {(bytesWritten,totalBytesWritten,totalBytesExpectedToWrite) -> Void in progress(bytesWritten:bytesWritten,totalBytesWritten:totalBytesWritten,totalBytesExpectedToWrite:totalBytesExpectedToWrite) }.responseJSON { response in responseResult(responseValue:response.result.value,error:response.result.error) } } /* ** 写法二 block定义成宏的写法 //fileURL实例:let fileURL = NSBundle.mainBundle().URLForResource("Default",block:uploadClosure) { Alamofire.upload(.POST,totalBytesExpectedToWrite) -> Void in block(nil,nil,bytesWritten,totalBytesExpectedToWrite) }.responseJSON { response in block(response.result.value,response.result.error,nil) } } */ // --文件下载 //下载到默认路径let destination = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory,domain: .UserDomainMask) let destination = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory,domain: .UserDomainMask) //默认路径可以设置为空,因为有默认路径 func BLDownload(type:RequestType,URLString:String,progress:(bytesRead: Int64?,totalBytesRead: Int64?,totalBytesExpectedToRead: Int64?) -> Void,error: NSError?) -> Void) { switch type { case .requestTypeGet: Alamofire.download(.GET,destination: destination) .progress { (bytesRead,totalBytesRead,totalBytesExpectedToRead) in progress(bytesRead:bytesRead,totalBytesRead:totalBytesRead,totalBytesExpectedToRead:totalBytesExpectedToRead) } .response { (request,response,_,error) in responseResult(responseValue:response,error:error) } break case .requestTypePost: Alamofire.download(.POST,error:error) } } } /* block定义成宏的写法 let destination = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory,block:uploadClosure) { switch type { case .requestTypeGet: Alamofire.download(.GET,totalBytesExpectedToRead) in block(nil,bytesRead,totalBytesExpectedToRead) } .response { (request,error) in block(response,error,nil) } break case .requestTypePost: Alamofire.download(.POST,totalBytesExpectedToRead) in block(nil,nil) } } } */ // --上传多张图片 func BLPostUploadMultiPicture(url: String,imgParameters: [UIImage]?,failed: (error: NSError?) -> ()) { Alamofire.upload(.POST,headers: parameters as? [String : String],multipartFormData: { (formData) in for index in 0..<imgParameters!.count { let imageData = UIImagePNGRepresentation(imgParameters![index] ) formData.appendBodyPart(data: imageData!,name: "img(index)",fileName: "(index).jpg",mimeType: "image/png") } },encodingMemoryThreshold: Manager.MultipartFormDataEncodingMemoryThreshold){ (result) in switch result { case .Success(let upload,_): upload.responseJSON{ respone in print(respone.data) successed(responSEObject: respone.data) } case .Failure(let error): print(error) break } } } }
转载请注明出处谢谢 http://my.oschina.net/iceTear/blog/743007 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|