声明处:AFURLRequestSerialization.h
概述
AFMultipartFormData协议定义的方法是为AFHTTPRequestSerializer的- multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock
方法中块的参数提供的。
任务
- - appendPartWithFileURL:name:error: 必须实现的方法
- - appendPartWithFileURL:name:fileName:mimeType:error: 必须实现的方法
- - appendPartWithInputStream:name:fileName:length:mimeType: 必须实现的方法
- - appendPartWithFileData:name:fileName:mimeType: 必须实现的方法
- - appendPartWithFormData:name: 必须实现的方法
- - appendPartWithHeader:body: 必须实现的方法
- - throttleBandwidthWithPacketSize:delay: 必须实现的方法
实例方法
appendPartWithFileData:name:fileName:mimeType:
- (void)appendPartWithFileData:(NSData *)data name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType
讨论
追加HTTP头Content-Disposition:file; filename=#{filename}; name=#{name}
和Content-Type:#{mimeType}
, 其次是编码的文件数据和多部分表单边界。
参数
data
被编码的数据,追加到表单数据。
name
指定数据关联的名称。这个参数不能为nil。
fileName
指定数据关联的文件名称。这个参数不能为nil。
mimeType
指定数据的MIME类型。(举个例子,JPEG图片的MIME类型为image/jpeg)有效的MIME类型列表,详见http://www.iana.org/assignments/media-types/ .这个参数不能为nil。
声明处
AFURLRequestSerialization.h
appendPartWithFileURL:name:error
- (BOOL)appendPartWithFileURL:(NSURL *)fileURL name:(NSString *)name error:(NSError *_Nullable __autoreleasing *)error
讨论
追加HTTP头Content-Disposition: file; filename=#{generated filename}; name=#{name}
和Content-Type:#{generated mimeType}
,其次是编码的文件数据和多部分表单边界。
分别使用fileURL中最后的路径部分和文件URL扩展的系统关联MIME类型,在表单中数据的文件名和MIME类型将自动生成。
参数
fileURL
追加到表单的文件内容对应的URL。这个参数不能为nil。
name
指定数据相关联的名称。这个参数不能为nil。
error
如果一个错误发生,返回一个包含描述问题的NSError对象。
返回值
如果文件数据追加成功,返回YES,否者返回NO。
声明处
AFURLRequestSerialization.h
appendPartWithURL:name:fileName:mimeType:error
- (BOOL)appendPartWithFileURL:(NSURL *)fileURL name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType error:(NSError *_Nullable __autoreleasing *)error
讨论
追加到HTTP头Content-Disposition: file; filename=#{filename}; name = #{name}
和Content-Type: #{mimeType}
, 其次是编码的文件数据和多部分表单边界。
参数
fileURL
追加到表单的文件内容对应的URL。这个参数不能为nil。
name
指定数据相关联的名称。这个参数不能为nil。
fileName
在Content-Disposition头中使用的文件名称。这个参数不能为nil。
mimeType
文件数据的公开的MIME类型。这个参数不能为nil。
error
如果一个错误发生,返回一个包含描述问题的NSError对象。
返回值
如果文件数据追加成功,返回YES,否者返回NO。
声明处
AFURLRequestSerialization.h
appendPartWithFormData:name:
- (void)appendPartWithFormData:(NSData *)data name:(NSString *)name
讨论
追加HTTP头Content-Disposition: form-data; name=#{name}
, 其次编码的数据和多部分表单的边界。
参数
data
被编码的数据,并追加到表单的数据。
name
根据指定数据相关联的名称。这个参数不能为nil。
声明处
AFURLRequestSerialization.h
appendPartWithHeaders:body:
- (void)appendPartWithHeaders:(nullable NSDictionary<NSString*,NSString*> *)headers body:(NSData *)body
讨论
追到HTTP头,其次为编码数据和多部分表单边界。
参数
header
被追到表单数据的HTTP头。
body
被编码的数据并追加到表单数据。这个参数不能为nil。
声明处
AFURLRequestSerialization.h
appendPartWithInputStream:name:filename:length:mimeType:
- (void)appendPartWithInputStream:(nullable NSInputStream *)inputStream name:(NSString *)name fileName:(NSString *)fileName length:(int64_t)length mimeType:(NSString *)mimeType
讨论
追加HTTP头Content-Dispostion: file; filename=#{filename}; name=#{name}
和 Content-Type:#{mimeType}
, 其次是输入流的数据和多部分表单边界。
参数
inputStream
被追加到表单数据的输入流。
name
与指定输入流相关联的名称。这个参数不能为nil。
fileName
与制定输入流相关联的文件名称。这个参数不能为nil。
length
指定输入流的字节长度。
mimeType
指定数据的MIME类型。(举例, 一个JPEG图片的MIME类型为image/jpeg)一个有效MIME类型的列表,详见http://www.iana.org/assignments/media-types/。这个参数不能nil。
声明处
AFURLRequestSerialization.h
throttleBandwidthWithPacketSize:delay:
- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes delay:(NSTimeInterval)delay
讨论
通过限制包的大小来控制请求带宽,为从上传流中读取每个大块添加延迟。
当通过3G或EDGE链接上传时,请求可能报“请求体流耗尽”的失败。依据建议的值(kAFUploadStreamGSuggestedPacketSize和 kAFUploadStream3GSuggestedDelay)设置一个最大的包大小和延迟,降低输入流分配过多的带宽的风险。同时,不建议你只基于网络可达性来限制带宽。替代的,你应该考虑在一个失败的块中检查“请求体流耗尽”,同时用限制带宽来重试请求。
参数
numberOfBytes
包的最大字节数。默认的输入流包大小为16kb。
delay
每次读取一个包的延时间隔。默认情况下,不设置延时。
声明处
AFURLRequestSerialization.h
// END 应该好好看看API啊,并看看怎么实现的。仅仅会用觉得没有安全感啊。