【发布时间】:2015-11-20 12:14:50
【问题描述】:
上下文
我想发送一个包含由两段组成的多部分正文数据的 HTTP 请求:
- 包含一些元数据的 JSON 字符串
- 一些文件二进制数据
我已经知道的
正如answer 中所述,这可以很容易地完成。但是在文件可能很大的情况下会发生什么?有了这个新的约束,我们自然不能将数据封装在 NSData 对象中,因为这会占用大量的内存资源。
熟悉NSURLRequest 类的人的第一个想法是使用HTTPBodyStream 属性而不是HTTPBody。但是如何获得一个可以同时写入 JSON 和文件数据段(以及边界和其他必需的 HTTP 内容)的流呢?
出路是继承NSInputStream。事实上,我注意到 AFNetworking 框架使用了这种方法。但据我所知,NSStream 类中有很多未记录/奇怪的方法可以覆盖,如here 所述,在我看来,这听起来需要做很多(潜在危险的)工作实现一些看似简单的事情。
问题
有没有办法实现所需的行为?请考虑以下限制:
- 没有第三方框架
- 使用干净的方法(不要覆盖未记录的方法,因为它们可能会在未来的 SDK 上发生变化)
【问题讨论】:
标签: ios http nsurlrequest nsinputstream