简介
Pitaya是一个基于NSURLSession
开源的适合大文件上传的HTTP请求库.十分小巧.
PitayaManager
简介
PitayaManager负责
- 构造 NSURLRequest
- 确定 URL
- 确定 HTTP 方法(GET、POST 等)
- 添加特定的 HTTP 头
- 填充 HTTP Body
2.驱动 session.dataTaskWithRequest 方法,开始请求
实现multipart/form-data请求
为什么这个库适合大文件的上传呢,原因就在PitayaManager的buildBody()
和 buildHeader()
方法中.
在buildHeader()
方法中,判断PitayaManager
中的实例变量file
是否为空,非空则表示有文件上传,添加Content-Type
头字段
1 | Content-Type: multipart/form-data; boundary=PitayaUGl0YXlh |
boundary
是自己指定的间隔符.
在buildBody()
方法中,如上判断是否有文件需要上传,有则按照如下格式设置body
1 | --PitayaUGl0YXlh |
这样,就可以完成multipart/form-data请求的创建,实现文件上传.
降低耦合
虽然PitayaManager的功能已经足够,但是如果直接将PitayaManager使用到项目中,那么如果有一天对PitayaManager的功能不满意,替换项目中的PitayaManager接口的工作量将十分多.所以,Pitaya运用了适配器模式,将PitayaManager再进行封装,创建了Pitaya
类.这样,如果需要替换PitayaManager,只需要在Pitaya类中进行修改.