Swift3.0 Alamofire网络请求的封装(get,post,upload图片上传)
2016-11-17 01:07
603 查看
图片上传详解见上一篇文章
import Foundation import UIKit import Alamofire import SwiftyJSON private let NetworkRequestShareInstance = NetworkRequest() class NetworkRequest { class var sharedInstance : NetworkRequest { return NetworkRequestShareInstance } } extension NetworkRequest { //MARK: - GET 请求 // let tools : NetworkRequest.shareInstance! func getRequest(urlString: String, params : [String : Any], success : @escaping (_ response : [String : AnyObject])->(), failture : @escaping (_ error : Error)->()) { //使用Alamofire进行网络请求时,调用该方法的参数都是通过getRequest(urlString, params, success :, failture :)传入的,而success传入的其实是一个接受 [String : AnyObject]类型 返回void类型的函数 Alamofire.request(urlString, method: .get, parameters: params) .responseJSON { (response) in/*这里使用了闭包*/ //当请求后response是我们自定义的,这个变量用于接受服务器响应的信息 //使用switch判断请求是否成功,也就是response的result switch response.result { case .success(let value): //当响应成功是,使用临时变量value接受服务器返回的信息并判断是否为[String: AnyObject]类型 如果是那么将其传给其定义方法中的success // if let value = response.result.value as? [String: AnyObject] { success(value as! [String : AnyObject]) // } let json = JSON(value) PrintLog(json) case .failure(let error): failture(error) print("error:\(error)") } } } //MARK: - POST 请求 func postRequest(urlString : String, params : [String : Any], success : @escaping (_ response : [String : AnyObject])->(), failture : @escaping (_ error : Error)->()) { Alamofire.request(urlString, method: HTTPMethod.post, parameters: pa 4000 rams).responseJSON { (response) in switch response.result{ case .success: if let value = response.result.value as? [String: AnyObject] { success(value) let json = JSON(value) PrintLog(json) } case .failure(let error): failture(error) PrintLog("error:\(error)") } } } //MARK: - 照片上传 /// /// - Parameters: /// - urlString: 服务器地址 /// - params: ["flag":"","userId":""] - flag,userId 为必传参数 /// flag - 666 信息上传多张 -999 服务单上传 -000 头像上传 /// - data: image转换成Data /// - name: fileName /// - success: /// - failture: func upLoadImageRequest(urlString : String, params:[String:String], data: [Data], name: [String],success : @escaping (_ response : [String : AnyObject])->(), failture : @escaping (_ error : Error)->()){ let headers = ["content-type":"multipart/form-data"] Alamofire.upload( multipartFormData: { multipartFormData in //666多张图片上传 let flag = params["flag"] let userId = params["userId"] multipartFormData.append((flag?.data(using: String.Encoding.utf8)!)!, withName: "flag") multipartFormData.append( (userId?.data(using: String.Encoding.utf8)!)!, withName: "userId") for i in 0..<data.count { multipartFormData.append(data[i], withName: "appPhoto", fileName: name[i], mimeType: "image/png") } }, to: urlString, headers: headers, encodingCompletion: { encodingResult in switch encodingResult { case .success(let upload, _, _): upload.responseJSON { response in if let value = response.result.value as? [String: AnyObject]{ success(value) let json = JSON(value) PrintLog(json) } } case .failure(let encodingError): PrintLog(encodingError) failture(encodingError) } } ) } }
相关文章推荐
- Swift3.0 Alamofire 网络请求的封装--->get,post,upload图片上传
- ReactNative fetch网络请求封装(GET,POST,图片上传)
- Android 网络请求框架,包涵get,post请求,from表单上传图片,基于okhtt封装的图片上传
- AFNetworking(get)请求数据,(post)上传图片
- AFNetworking(get)请求数据,(post)上传图片
- Volley请求HTTPS,及其实现post,delete,get,put,上传下载图片。demo
- OkHttp3封装,可链式调用,目前包括post,get,上传、下载文件,及https请求加证书
- 关于AFN的POST请求,图片上传的二次封装
- Get、Post(HTTP中最常用的请求方式 使用ASIHTTPRequest)----例如:登录、上传图片(调用手机相册 UIImage 转为data)
- HttpClient封装,get请求和post请求,文件下载和上传
- swift3.0 URLSession网络请求工具类封装(get请求,post请求)
- iOS基础8:自定义MyData/自定义SQLite用于网络判断,版本判断,图片缓存处理,下载或者上传的GET或POST请求,加密手段,.数据解析
- AFNetworking(get)请求数据,(post)上传图片
- 使用okhttp进行图片下载,上传,get,post网络请求
- # C++网络请求(get,post,上传图片)与QML混合编程
- ASIHTTPRequest 对GET POST 请求简单封装
- Android 发送HTTP GET POST 请求以及通过 MultipartEntityBuilder 上传文件(二)
- volley 应用 GET POST请求 图片异步加载
- Android_HttpClient_get请求post表单提交上传
- C#实现http协议支持上传下载文件的GET、POST请求