Alamofire封装

xiaoxiao2021-02-28  47

摘要: Alamofire封装

// //  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?,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, parameters: AnyObject, successed:(responseObject: AnyObject?) -> (), failed: (error: NSError?) -> ()) {         //print(parameters)         Alamofire.request(.POST, 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)             }         }              }          // --文件上传     //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",withExtension: "png")      func BLUpload(URLString:String,fileURL:NSURL,block:uploadClosure) {            Alamofire.upload(.POST, URLString, file: fileURL).progress {(bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) -> Void in      block(nil,nil,bytesWritten ,totalBytesWritten,totalBytesExpectedToWrite)      }.responseJSON { response in      block(response.result.value,response.result.error,nil,nil,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, responseResult:(responseValue: AnyObject?,error: NSError?) -> Void) {         switch type {         case .requestTypeGet:             Alamofire.download(.GET, URLString, 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, URLString, destination: destination)                 .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in                     progress(bytesRead:bytesRead,totalBytesRead:totalBytesRead,totalBytesExpectedToRead:totalBytesExpectedToRead)                 }                 .response { (request, response, _, error) in                     responseResult(responseValue:response,error:error)             }         }     }          /* block定义成宏的写法            let destination = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory, domain: .UserDomainMask)      //默认路径可以设置为空,因为有默认路径      func BLDownload(type:RequestType,URLString:String,block:uploadClosure) {      switch type {      case .requestTypeGet:      Alamofire.download(.GET, URLString, destination: destination)      .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in            block(nil,nil,bytesRead, totalBytesRead, totalBytesExpectedToRead)      }      .response { (request, response, _, error) in      block(response,error,nil,nil,nil)      }      break      case .requestTypePost:      Alamofire.download(.POST, URLString, destination: destination)      .progress { (bytesRead, totalBytesRead, totalBytesExpectedToRead) in      block(nil,nil,bytesRead, totalBytesRead, totalBytesExpectedToRead)      }      .response { (request, response, _, error) in      block(response,error,nil,nil,nil)      }      }      }            */          // --上传多张图片     func BLPostUploadMultiPicture(url: String, parameters: AnyObject, imgParameters: [UIImage]?, successed:(responseObject: AnyObject?) -> (), failed: (error: NSError?) -> ()) {         Alamofire.upload(.POST, url, 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

转载请注明原文地址: https://www.6miu.com/read-76309.html

最新回复(0)