Farlanki

Pitaya

字数统计: 329阅读时长: 1 min
2015/12/03 Share

简介

Pitaya是一个基于NSURLSession开源的适合大文件上传的HTTP请求库.十分小巧.

PitayaManager

简介

PitayaManager负责

  1. 构造 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
2
3
4
5
6
7
8
9
--PitayaUGl0YXlh
Content-Disposition: form-data; name="field1"

John Lui
--PitayaUGl0YXlh
Content-Disposition: form-data; name="text"; filename="file1.txt"

···[file1.txt 的数据]···
--PitayaUGl0YXlh--

这样,就可以完成multipart/form-data请求的创建,实现文件上传.

降低耦合

虽然PitayaManager的功能已经足够,但是如果直接将PitayaManager使用到项目中,那么如果有一天对PitayaManager的功能不满意,替换项目中的PitayaManager接口的工作量将十分多.所以,Pitaya运用了适配器模式,将PitayaManager再进行封装,创建了Pitaya类.这样,如果需要替换PitayaManager,只需要在Pitaya类中进行修改.

CATALOG
  1. 1. 简介
  2. 2. PitayaManager
    1. 2.1. 简介
    2. 2.2. 实现multipart/form-data请求
  3. 3. 降低耦合