請求類NSURLRequest
NSURLRequest類中常用方法和屬性總結:
//通過類方法創建默認的請求對象
NSURLRequest請求類除了在初始化時可以設定一些屬性,創建出來後則大部分屬性都為只讀的,無法設置與修改。另一個類NSMutableURLRequest可以更加靈活的設置請求的相關屬性。
/*
通過這種方式創建的請求對象 默認使用NSURLRequestUseProtocolCachePolicy緩存邏輯 默認請求超時時限為60s
*/
+ (instancetype)requestWithURL:(NSURL *)URL;
//返回一個BOOL值 用於判斷是否支持安全編碼
+ (BOOL)supportsSecureCoding;
//請求對象的初始化方法 創建時設置緩存邏輯和超時時限
+ (instancetype)requestWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval;
//init方法進行對象的創建 默認使用NSURLRequestUseProtocolCachePolicy緩存邏輯 默認請求超時時限為60s
- (instancetype)initWithURL:(NSURL *)URL;
//init方法進行對象的創建
- (instancetype)initWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval;
//只讀屬性 獲取請求對象的URL
@property (nullable, readonly, copy) NSURL *URL;
//只讀屬性 緩存策略枚舉
/*
NSURLRequestCachePolicy枚舉如下:
typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
{
//默認的緩存協議
NSURLRequestUseProtocolCachePolicy = 0,
//無論有無本地緩存數據 都進行從新請求
NSURLRequestReloadIgnoringLocalCacheData = 1,
//忽略本地和遠程的緩存數據 未實現的策略
NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4,
//無論有無緩存數據 都進行從新請求
NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
//先檢查緩存 如果沒有緩存再進行請求
NSURLRequestReturnCacheDataElseLoad = 2,
//類似離線模式,只讀緩存 無論有無緩存都不進行請求
NSURLRequestReturnCacheDataDontLoad = 3,
//未實現的策略
NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};
*/
@property (readonly) NSURLRequestCachePolicy cachePolicy;
//只讀屬性 獲取請求的超時時限
@property (readonly) NSTimeInterval timeoutInterval;
//主文檔地址 這個地址用來存放緩存
@property (nullable, readonly, copy) NSURL *mainDocumentURL;
//獲取網絡請求的服務類型 枚舉如下
/*
typedef NS_ENUM(NSUInteger, NSURLRequestNetworkServiceType)
{
NSURLNetworkServiceTypeDefault = 0, // Standard internet traffic
NSURLNetworkServiceTypeVoIP = 1, // Voice over IP control traffic
NSURLNetworkServiceTypeVideo = 2, // Video traffic
NSURLNetworkServiceTypeBackground = 3, // Background traffic
NSURLNetworkServiceTypeVoice = 4 // Voice data
};
*/
@property (readonly) NSURLRequestNetworkServiceType networkServiceType;
//獲取是否允許使用服務商蜂窩網絡
@property (readonly) BOOL allowsCellularAccess;
NSMutableURLRequest類中常用方法與屬性總結
//設置請求的URL
@property (nullable, copy) NSURL *URL;
//設置請求的緩存策略
@property NSURLRequestCachePolicy cachePolicy;
//設置超時時間
@property NSTimeInterval timeoutInterval;
//設置緩存目錄
@property (nullable, copy) NSURL *mainDocumentURL;
//設置網絡服務類型
@property NSURLRequestNetworkServiceType networkServiceType NS_AVAILABLE(10_7, 4_0);
//設置是否允許使用服務商蜂窩網
@property BOOL allowsCellularAccess NS_AVAILABLE(10_8, 6_0);
NSURLRequest請求對象與HTTP/HTTPS協議相關請求的屬性設置:
以下屬性的設置必須使用NSMutableURLRequest類,如果是NSURLRequest,則只可以讀,不可以修改。
//設置HPPT請求方式 默認為“GET”
@property (copy) NSString *HTTPMethod;
//通過字典設置HTTP請求頭的鍵值數據
@property (nullable, copy) NSDictionary<NSString *, NSString *> *allHTTPHeaderFields;
//設置http請求頭中的字段值
- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field;
//向http請求頭中添加一個字段
- (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
//設置http請求體 用於POST請求
@property (nullable, copy) NSData *HTTPBody;
//設置http請求體的輸入流
@property (nullable, retain) NSInputStream *HTTPBodyStream;
//設置發送請求時是否發送cookie數據
@property BOOL HTTPShouldHandleCookies;
//設置請求時是否按順序收發 默認禁用 在某些服務器中設為YES可以提高網絡性能
@property BOOL HTTPShouldUsePipelining;
請求回執類NSURLResponse屬性簡介
NSURLResponse類中存放請求的回執信息,在發送網絡請求時,如果請求成功,首先會接收到服務端的回執信息,直接開始接收具體的返回數據。NSURLResponse對象中主要有以下屬性:
//請求的URL地址
@property (nullable, readonly, copy) NSURL *URL;
//返回數據的數據類型
@property (nullable, readonly, copy) NSString *MIMEType;
//獲取返回數據的內容長度
@property (readonly) long long expectedContentLength;
//獲取返回數據的編碼方式
@property (nullable, readonly, copy) NSString *textEncodingName;
//返回拼接的數據文件名 以url為名 數據沒醒MIMEType為擴展名
@property (nullable, readonly, copy) NSString *suggestedFilename;
對於HTTP請求,請求回執會被封裝為NSHTTPURLResponse對象,其中除了有上面那些屬性外,還有如下的擴展屬性:
//請求的狀態碼
@property (readonly) NSInteger statusCode;
//請求頭中所有的字段
@property (readonly, copy) NSDictionary *allHeaderFields;