繼承:NSObject
聲明處:AFURLRequestSerialization.h
概述
AFHTTPRequestSerializer符合AFURLRequestSerialization和AFURLResponseSerialization協議,提供一個查詢字符串/URL表單參數序列和默認請求報頭,響應狀態碼和內容類型驗證的基礎實現。
處理HTTP的任意請求和響應,建議使用AFHTTPRequestSerializer的子類來確保統一的默認行為。
任務
其他方法
屬性
stringEncoding
allowsCellularAccess
cachePolicy
HTTPShouldHandleCookies
HTTPShouldUsePipelining
networkServiceType
timeoutInterval
配置HTTP請求報頭
屬性
HTTPRequestHeaders
方法
+ serializer
– setValue:forHTTPHeaderField:
– valueForHTTPHeaderField:
– setAuthorizationHeaderFieldWithUsername:password:
– clearAuthorizationHeader
配置查詢字符串參數序列化
屬性
HTTPMethodsEncodingParametersInURI
方法
– setQueryStringSerializationWithStyle:
– setQueryStringSerializationWithBlock:
創建請求對象
方法
– requestWithMethod:URLString:parameters:error:
– multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:
– requestWithMultipartFormRequest:writingStreamContentsToFile:completionHandler:
屬性
HTTPMethodsEncodingParametersInURI
@property (nonatomic, strong) NSSet<NSString*> *HTTPMethodsEncodingParametersInURI
討論
序列化請求的HTTP方法,將編碼參數為一個查詢字符串。默認設置為GET,HEAD和DELETE。
聲明處
AFURLRequestSerialization.h
HTTPRequestHeaders
@property (readonly, nonatomic, strong) NSDictionary<NSString*NSString*> *HTTPRequestHeaders
討論
默認HTTP報頭字段值用于序列化請求。默認,包含如下
- Accept-Language 是NSLocale
+preferredLanguages
的內容 - User-Agent 是各種標識符和操作系統名稱的內容
添加和刪除默認請求報頭,使用setValue:forHTTPHeaderField:
。
聲明處
AFURLRequestSerialization.h
HTTPShouldHandleCookies
@property (nonatomic, assign) BOOL HTTPShouldHandleCookies
討論
創建請求是否使用默認的cookie處理。 默認為YES。
參見
NSMutableURLRequest @property HTTPShouldHandleCookies
聲明處
AFURLRequestSerialization.h
HTTPShouldUsePipelining
@property (nonatomic, assign) BOOL HTTPShouldUsePipelining
討論
在早期的傳送器中接受到響應數據之前,設置是否可以創建請求進行傳送數據。默認值為NO。
參見
NSMutableURLRequest @property HTTPShouldUsePipelining
聲明處
AFURLRequestSerialization.h
allowsCellularAccess
@property (nonatomic, assign) BOOL allowsCellularAccess
討論
是否允許時候用設備的移動網絡進行創建請求(如果有的話)。默認值為YES。
同見
NSMutableURLRequest
@property allowsCellularAccess
聲明處
AFURLRequestSerialization.h
cachePolicy
@property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy
討論
創建請求的緩存機制。默認為NSURLRequestUseProtocolCachePolicy。
同見
NSMutableURLRequest
@property cachePolicy
聲明處
AFURLRequestSerialization.h
networkServiceType
討論
創建請求的網絡服務類型。默認值為NSURLNetworkServiceTypeDefault。
同見
NSMutableURLRequest @property networkServiceType
聲明處
AFURLRequestSerialization.h
stringEncoding
討論
用于序列化參數的字符串編碼類型。默認值為NSUTF8StringEncoding。
聲明處
AFURLRequestSerialization.h
timeoutInterval
討論
創建請求的超時時間,單位秒。默認的超時時間為60秒。
同見
NSMutableURLRequest @property timeoutInterval
聲明處
AFURLRequestSerialization.h
類方法
serializer
+ (instancetype)serializer
討論
根據默認配置創建和返回一個序列化實例。
聲明處
AFURLRequestSerialization.h
實例方法
clearAuthorizationHeader
- (void)clearAuthorizationHeader
討論
清除所有存在的HTTP頭Authorization的值。
聲明處
AFURLRequestSerialization.h
multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:
- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method URLString:(NSString *)URLString parameters:(nullable NSDictionary<NSString*,id> *)parameters constructingBodyWithBlock:(nullable void ( ^ ) ( id<AFMultipartFormData> formData ))block error:(NSError *_Nullable __autoreleasing *)error
討論
通過詳細的HTTP方法和URL字符串創建一個NSMutableURLRequest對象。使用詳細的參數和多部分表單塊來設計一個多部分/表單數據的HTTP內容。詳見http://www.w3.org/TR/html4/interact/forms.html.
在一個HTTP內容中,多部分表單請求是自動從硬盤或內容中讀取文件。作為結果的NSMutableURLRequest對象有一個HTTPBodyStream屬性,所以在這個請求對象中避免設置HTTPBodyStream或HTTPBody,同時清除內容流中清除多部分數據。
參數
method
請求的HTTP方法。這個參數不能為GET,或HEAD,或nil。
URLString
用于創建請求URL的URL字符串。
parameters
參數被編碼和設置到請求的HTTP內容。
block
一個在HTTP內容中添加一個遵循AFMultipartFormData協議的對象的參數并添加數據的塊。
error
構造請求時發生的錯誤。
返回值
一個NSMutableURlRequest對象。
聲明處
AFURLRequestSerialization.h
requestWithMethod:URLString:parameters:error:
- (NSMutableURLRequest *)requestWithMethod:(NSString *)method URLString:(NSString *)URLString parameters:(nullable id)parameters error:(NSError *_Nullable __autoreleasing *)error
討論
使用HTTP方法和URL字符串創建一個NSMutableURLRequest對象。
參數
method
HTTP請求方法,如GET,POST,PUT,或DELETE。這個參數不能為nil。
URLString
用于創建請求URL的URL字符串。
parameters
GET請求時,參數設置為一個查詢字符串。POST請求時,參數設置為HTTP內容。
error
構建請求時發生的錯誤。
返回值
一個NSMutableURLRequest對象。
聲明處
AFURLRequestSerialization.h
requestWithMultipartFormRequest:writingStreamContentsToFile:completionHandler:
- (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request writingStreamContentsToFile:(NSURL *)fileURL completionHandler:(nullable void ( ^ ) ( NSError *_Nullable error ))handler
討論
創建一個NSMutableURLRequest,通過從請求移動HTTPBodyStream并異步將內容寫到指定的域,在創建完成后調用完成句柄。
在NSURLSessionTask有一個BUG,當流內容是來之HTTP體,會導致請求不會發送Content-Length頭, 當與亞馬遜S3服務器通訊時有一個明顯的問題。作為一個工作區,這個方法根據multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:構建請求,或任意其他根據HTTPBodyStream創建的請求,寫內容到指定的域,返回一個將HTTPBodyStream屬性設置為nil的原請求的拷貝。由此,那個域也能傳到AFURlSeesionManager - uploadTaskWithRequest:fromFile:progress:completionHandler:, 或擁有將請求中的HTTPBbody屬性讀到一個NSData中的內容。
參數
request
多部分表單請求。請求的HTTPBodyStream屬性必須不能設置為nil。
fileURL
用于寫多部分表單內容的文件URL。
handle
一個用于執行的句柄塊。
同見
https://github.com/AFNetworking/AFNetworking/issues/1398
聲明處
AFURLRequestSerialization.h
setAuthorizationHeaderFieldWithUsername:password:
- (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username password:(NSString *)password
討論
對用戶名和密碼進行Base64編碼后作為一個基礎的驗證值,設置在HTTP端創建的請求對象中的HTTP頭“Authorization”域中。會重寫已經存在的Authorization域。
參數
username
HTTP基礎驗證的用戶名。
password
HTTP基礎驗證的密碼。
聲明處
AFURLRequestSerialization.h
setQueryStringSerializationWithBlock:
- (void)setQueryStringSerializationWithBlock:(nullable NSString *( ^ ) ( NSURLRequest *request , id parameters , NSError *__autoreleasing *error ))block
討論
設置一個自定義方法根據指定的塊來詢問字符串序列。
參數
block
定義一個編碼參數的過程到一個詢問字符串之中的塊。這個塊返回詢問字符串并有三個參數:請求,用于編碼的參數,嘗試為提供的請求編碼參數發生的錯誤。
聲明處
AFURLRequestSerialization.h
setQueryStringSerializationWithStyle:
- (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style
討論
依據預定義的類型中的一個類型,設置詢問字符串序列化的方法。
參數
style
序列化類型。
同見
AFHTTPRequestQueryStringSerializationStyle
聲明處
AFURLRequestSerialization.h
setValue:forHTTPHeaderField:
- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field
討論
HTTP端創建的請求對象中,設置HTTP頭的值。如果設置的值為nil,則如果存在已經同樣的HTTP頭就移除。
參數
value
為指定的頭設置默認值,或設置為nil。
field
用來設置值的HTTP頭。
聲明處
AFURLRequestSerialization.h
valueForHTTPHeaderField:
- (nullable NSString *)valueForHTTPHeaderField:(NSString *)field
討論
返回設置在請求序列化中的HTTP頭的值。
參數
field
用來恢復默認值的HTTP頭。
返回值
為指定HTTP頭設置為默認值的值,可能為nil。
聲明處
AFURLRequestSerialization.h
// END 這個真夠長了,翻譯了很久。!_!