Alamofire 框架封装与使用
1. Alamofire github 地址: Alamofire
2. 终端切换到项目文件夹, 执行指令 pod init , 项目文件夹中, 打开 Podfile 文件,写入库名称
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'target '测试-01-Alamofire' do# Comment the next line if you don't want to use dynamic frameworksuse_frameworks!# Pods for 测试-01-Alamofirepod 'Alamofire'
end
3. 回到终端,输入指令 pod search Alamofire -> pod help -> pod install --no-repo-update, 下载完成库
4. 测试请求方法
/// 网络请求/// - Parameters:/// - method: GET / POST/// - URLString: URLString/// - parameters: 参数字典/// - finished: 完成回调private func request(method: HTTPMethod, URLString: String, parameters: [String: Any]?, finished: @escaping requestCallBack){AF.request(URLString, method: method, parameters: parameters).responseJSON{ response inswitch response.result{case let .success(data):finished(data,nil)breakcase let .failure(error):finished(nil,error)break}}}
5. 测试上传文件方法
///上传文件private func upload(URLString: String, data: Data, name: String, parameters: [String: Any]?, finished: @escaping requestCallBack){var parameter = parameters//如果追加 token 失败,直接返回if !appendToken(parameters: ¶meter){// token 无效finished(nil,NSError(domain: "cn.cast.error", code: -1001, userInfo: ["message":"token 为空"]))return}/**1. data 要上传文件的二进制2. name 是服务器定义的字段名称 - 后台接口文档会提示3. fileName 是保存在服务器的文件名,但是:现在通常可以随便写,后台会做一些处理- 根据上传的文件,生成 缩略图,中等图,高清图- 保存在不同路径,并且自动生成文件名- fileName 是 HTTP 协议定义的属性4. mimeType / contentType: 客户端通知服务器,二进制数据的准确类型- 大类型 / 小类型* image/gif image/jpg image/png* text/plain text/html* application/json- 服务器不准确的类型* application/octet-stream*///TODO
// post(URLString, parameters: parameter, headers: nil, constructingBodyWith: { formData in
// formData.appendPart(withFileData: data, name: name, fileName: "test", mimeType: "application/octet-stream")
// }, progress: nil) { _, result in
// finished(result,nil)
// } failure: { _, error in
// print(error)
// finished(nil,error)
// }//2>上传文件AF.upload(multipartFormData: { multipartFormData in//拼接上传文件的二进制数据multipartFormData.append(data, withName: name, fileName: "test", mimeType: "application/octet-stream")//遍历参数字典,生成对应的参数数据if let parameter = parameter {for (k, v) in parameter {let str = v as! Stringlet strData = str.data(using: .utf8)!// data 是 v 的二进制数据 name 是 KmultipartFormData.append(strData, withName: k)}}}, to: URLString).responseJSON { response inprint(response.result)switch response.result{case let .success(data)://完成回调finished(data,nil)breakcase let .failure(error)://在开发网络应用中的时候,错误不要提示给用户,但是错误一定要输出print(error)finished(nil,error)break}}}
Alamofire 框架封装与使用相关推荐
- iOS swift Alamofire+HandyJSON网络框架封装
iOS swift Alamofire+HandyJSON网络框架封装 我们在学习Objective_C时使用的网络框架是AFNetworking+MJExtension,而在swift中Alamof ...
- iOS 走近商城 APP(三 WKWebView 商品规格选择框架封装)
原文链接:http://www.jianshu.com/p/293ee1bfe104 商城 -- 由 3033 分享 开篇 忽然发现最近也只有值班才能写东西了,中间更新了两篇其他的断了下商城相关的文章 ...
- 【OkHttp】OkHttp 源码分析 ( 网络框架封装 | OkHttp 4 迁移 | OkHttp 建造者模式 )
OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...
- 利用Spring框架封装的JavaMail现实同步或异步邮件发送
利用Spring框架封装的JavaMail现实同步或异步邮件发送 作者:张纪豪 J2EE简单地讲是在JDK上扩展了各类应用的标准规范,邮件处理便是其中一个重要的应用.它既然是规范,那么我们就可以通过J ...
- 【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)...
目录: [SSH进阶之路]Struts基本原理 + 实现简单登录(二) [SSH进阶之路]一步步重构MVC实现Struts框架--从一个简单MVC开始(三) [SSH进阶之路]一步步重构MVC实现St ...
- Python——使用Flask框架封装接口
Python--使用Flask框架封装接口 引言 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活.轻便.安全且容易上手.它可以很好地结合MVC模式进行开发,开发 ...
- Android肝帝战纪之网络请求框架封装(Retrofit的封装)
网络请求框架封装(OkHttp3+Retrofit+loading的封装) Retrofit的Github链接 点此链接到Github AVLoadingIndicatorView的Github链接( ...
- MVVM+Retrofit+Kotlin网络框架封装
上篇文章讲了MVVM入门,网络请求部分非常简单和原始,本篇则是上一篇的进阶,主要讲解如何在vm中使用协程结合Retrofit进行网络框架的封装. GitHub完整版:https://github.co ...
- 优雅地实现Android主流图片加载框架封装,可无侵入切换框架
项目开发中,往往会随着需求的改变而切换到其它图片加载框架上去.如果最初代码设计的耦合度太高,那么恭喜你,成功入坑了.至今无法忘却整个项目一行行去复制粘贴被支配的恐惧.:) 那么是否存在一种方式 能够一 ...
最新文章
- 数学系学生的漫画,治愈了整个朋友圈
- Logger PatternLayout 格式
- Web 趋势榜:上周最热门的 10 大 Web 项目 - 210410
- VTK:细胞中心演示用法实战
- 信息学奥赛一本通(1050:骑车与走路)
- [转载]舌尖上的清华 I
- Python Excel到JSON的转换
- python支持esc退出_听说你不会用mac电脑装Python?看了这篇文章,秒懂!
- matlab2014 下的 libsvm 安装
- quartus ii 虚拟管脚设定
- PMP考试的打分标准是怎样的?
- Oracle中nlssort 中文 排序 用法
- 资本市场律师David Cameron作为合伙人加入德汇律师事务所香港办事处
- Fiori 动态磁贴示例
- FireFox浏览器的about:config参数大全及其具体用途介绍
- 《计算机工程》投稿经验分享
- 关于MySql使用索引的分析
- 看清接收网络数据包的全过程
- centos7 离线安装 rar 解压缩软件
- php后门检测工具,phpStudy后门如何检测和修复