一、NSURLRequest的相關API

1、NSURLRequest

@interface NSURLRequest : NSObject <NSSecureCoding, NSCopying, NSMutableCopying>
{
    @private
    NSURLRequestInternal *_internal;
}

/*!
 創建NSURLRequest對象
 默認使用NSURLRequestUseProtocolCachePolicy緩存邏輯
 默認請求超時時限為60s
 */
+ (instancetype)requestWithURL:(NSURL *)URL;

/*!
 是否支持安全編碼
 */
+ (BOOL)supportsSecureCoding;

/*!
 創建時設置緩存策略和超時時限
 @param URL 請求鏈接
 @param cachePolicy 緩存策略
 @param timeoutInterval 超時時間
 */
+ (instancetype)requestWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval;
/*!
 init方法進行對象的創建
 默認使用NSURLRequestUseProtocolCachePolicy緩存邏輯
 默認請求超時時限為60s
 */
- (instancetype)initWithURL:(NSURL *)URL;

/*!
 創建NSURLRequest對象
 默認使用NSURLRequestUseProtocolCachePolicy緩存邏輯
 默認請求超時時限為60s
 */
- (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,
    // 網絡語音通信傳輸,只能在VoIP使用
    NSURLNetworkServiceTypeVoIP = 1,
    // 影像傳輸
    NSURLNetworkServiceTypeVideo = 2,
    // 網絡后臺傳輸,優先級不高時可使用。對用戶不需要的網絡操作可使用
    NSURLNetworkServiceTypeBackground = 3,
    // 語音傳輸
    NSURLNetworkServiceTypeVoice = 4
 };
 */
@property (readonly) NSURLRequestNetworkServiceType networkServiceType;

/*!
 只讀屬性、獲取是否允許蜂窩請求
 */
@property (readonly) BOOL allowsCellularAccess;

@end

2、NSMutableURLRequest

NSURLRequest的子類,放開了許多只讀權限。

@interface NSMutableURLRequest : NSURLRequest

/*!
 設置請求的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);

3、NSURLRequest (NSHTTPURLRequest)

NSURLRequest的擴展,基本都是只讀屬性。

@interface NSURLRequest (NSHTTPURLRequest)

/*!
 獲取HTTP請求的方式
 */
@property (nullable, readonly, copy) NSString *HTTPMethod;

/*!
 獲取所有的請求頭
 */
@property (nullable, readonly, copy) NSDictionary<NSString *, NSString *> *allHTTPHeaderFields;

/*!
 獲取HTTP請求頭的值
 */
- (nullable NSString *)valueForHTTPHeaderField:(NSString *)field;

/*!
 獲取Post方式下的請求體
 */
@property (nullable, readonly, copy) NSData *HTTPBody;

/*!
 獲取http請求體的輸入流
 */
@property (nullable, readonly, retain) NSInputStream *HTTPBodyStream;

/*!
 發送請求時是否發送cookie數據
 */
@property (readonly) BOOL HTTPShouldHandleCookies;

/*!
 請求時是否按順序收發
 */
@property (readonly) BOOL HTTPShouldUsePipelining API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0));

@end

4、NSMutableURLRequest (NSMutableHTTPURLRequest)

NSMutableURLRequest的擴展,放開了許多只讀權限,可以針對HTTP進行許多設置。

@interface NSMutableURLRequest (NSMutableHTTPURLRequest)

/*!
 設置HTTP請求的方式、默認為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;

/*!
 在Post方式下、設置請求體
 */
@property (nullable, copy) NSData *HTTPBody;

/*!
 設置http請求體的輸入流
 */
@property (nullable, retain) NSInputStream *HTTPBodyStream;

/*!
 發送請求時是否發送cookie數據
 */
@property BOOL HTTPShouldHandleCookies;

/*!
 請求時是否按順序收發
 */
@property BOOL HTTPShouldUsePipelining API_AVAILABLE(macos(10.7), ios(4.0), watchos(2.0), tvos(9.0));

@end

原文鏈接:

iOS基礎深入補完計劃NSURLRequest/NSURLResponse相關API

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數據庫組件 SD...
    陽明先生_X自主閱讀 16,000評論 3 119
  • 218.241.181.202 wxhl60 123456 192.168.10.253 wxhl66 wxhl6...
    CYC666閱讀 1,409評論 0 6
  • Jiafu閱讀 275評論 0 0
  • 《堯都》 ————記秋堯都區街道漫步和咖啡館中的曼特寧。 清秋風撫發, 曾夸口獨仗天涯, 時間成落沙, 纏綿幾個冬...
    林姬閱讀 286評論 1 0
  • 今天讀了一組時間的隨筆。 時間是什么?物理學的概念、哲學的理解、文學的看法都是不一樣的。 前幾天發現了引力波,時間...
    鉛筆芒種閱讀 809評論 0 8