聲明處: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啊,并看看怎么實現的。僅僅會用覺得沒有安全感啊。