iOS的HTTP請(qǐng)求和請(qǐng)求回執(zhí)類(lèi)用法小結(jié)
請(qǐng)求類(lèi)NSURLRequest
NSURLRequest類(lèi)中常用方法和屬性總結(jié):
//通過(guò)類(lèi)方法創(chuàng)建默認(rèn)的請(qǐng)求對(duì)象
NSURLRequest請(qǐng)求類(lèi)除了在初始化時(shí)可以設(shè)定一些屬性,創(chuàng)建出來(lái)后則大部分屬性都為只讀的,無(wú)法設(shè)置與修改。另一個(gè)類(lèi)NSMutableURLRequest可以更加靈活的設(shè)置請(qǐng)求的相關(guān)屬性。
/*
通過(guò)這種方式創(chuàng)建的請(qǐng)求對(duì)象 默認(rèn)使用NSURLRequestUseProtocolCachePolicy緩存邏輯 默認(rèn)請(qǐng)求超時(shí)時(shí)限為60s
*/
+ (instancetype)requestWithURL:(NSURL *)URL;
//返回一個(gè)BOOL值 用于判斷是否支持安全編碼
+ (BOOL)supportsSecureCoding;
//請(qǐng)求對(duì)象的初始化方法 創(chuàng)建時(shí)設(shè)置緩存邏輯和超時(shí)時(shí)限
+ (instancetype)requestWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval;
//init方法進(jìn)行對(duì)象的創(chuàng)建 默認(rèn)使用NSURLRequestUseProtocolCachePolicy緩存邏輯 默認(rèn)請(qǐng)求超時(shí)時(shí)限為60s
- (instancetype)initWithURL:(NSURL *)URL;
//init方法進(jìn)行對(duì)象的創(chuàng)建
- (instancetype)initWithURL:(NSURL *)URL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval;
//只讀屬性 獲取請(qǐng)求對(duì)象的URL
@property (nullable, readonly, copy) NSURL *URL;
//只讀屬性 緩存策略枚舉
/*
NSURLRequestCachePolicy枚舉如下:
typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
{
//默認(rèn)的緩存協(xié)議
NSURLRequestUseProtocolCachePolicy = 0,
//無(wú)論有無(wú)本地緩存數(shù)據(jù) 都進(jìn)行從新請(qǐng)求
NSURLRequestReloadIgnoringLocalCacheData = 1,
//忽略本地和遠(yuǎn)程的緩存數(shù)據(jù) 未實(shí)現(xiàn)的策略
NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4,
//無(wú)論有無(wú)緩存數(shù)據(jù) 都進(jìn)行從新請(qǐng)求
NSURLRequestReloadIgnoringCacheData = NSURLRequestReloadIgnoringLocalCacheData,
//先檢查緩存 如果沒(méi)有緩存再進(jìn)行請(qǐng)求
NSURLRequestReturnCacheDataElseLoad = 2,
//類(lèi)似離線模式,只讀緩存 無(wú)論有無(wú)緩存都不進(jìn)行請(qǐng)求
NSURLRequestReturnCacheDataDontLoad = 3,
//未實(shí)現(xiàn)的策略
NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented
};
*/
@property (readonly) NSURLRequestCachePolicy cachePolicy;
//只讀屬性 獲取請(qǐng)求的超時(shí)時(shí)限
@property (readonly) NSTimeInterval timeoutInterval;
//主文檔地址 這個(gè)地址用來(lái)存放緩存
@property (nullable, readonly, copy) NSURL *mainDocumentURL;
//獲取網(wǎng)絡(luò)請(qǐng)求的服務(wù)類(lèi)型 枚舉如下
/*
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;
//獲取是否允許使用服務(wù)商蜂窩網(wǎng)絡(luò)
@property (readonly) BOOL allowsCellularAccess;
NSMutableURLRequest類(lèi)中常用方法與屬性總結(jié)
//設(shè)置請(qǐng)求的URL
@property (nullable, copy) NSURL *URL;
//設(shè)置請(qǐng)求的緩存策略
@property NSURLRequestCachePolicy cachePolicy;
//設(shè)置超時(shí)時(shí)間
@property NSTimeInterval timeoutInterval;
//設(shè)置緩存目錄
@property (nullable, copy) NSURL *mainDocumentURL;
//設(shè)置網(wǎng)絡(luò)服務(wù)類(lèi)型
@property NSURLRequestNetworkServiceType networkServiceType NS_AVAILABLE(10_7, 4_0);
//設(shè)置是否允許使用服務(wù)商蜂窩網(wǎng)
@property BOOL allowsCellularAccess NS_AVAILABLE(10_8, 6_0);
NSURLRequest請(qǐng)求對(duì)象與HTTP/HTTPS協(xié)議相關(guān)請(qǐng)求的屬性設(shè)置:
以下屬性的設(shè)置必須使用NSMutableURLRequest類(lèi),如果是NSURLRequest,則只可以讀,不可以修改。
//設(shè)置HPPT請(qǐng)求方式 默認(rèn)為“GET”
@property (copy) NSString *HTTPMethod;
//通過(guò)字典設(shè)置HTTP請(qǐng)求頭的鍵值數(shù)據(jù)
@property (nullable, copy) NSDictionary<NSString *, NSString *> *allHTTPHeaderFields;
//設(shè)置http請(qǐng)求頭中的字段值
- (void)setValue:(nullable NSString *)value forHTTPHeaderField:(NSString *)field;
//向http請(qǐng)求頭中添加一個(gè)字段
- (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field;
//設(shè)置http請(qǐng)求體 用于POST請(qǐng)求
@property (nullable, copy) NSData *HTTPBody;
//設(shè)置http請(qǐng)求體的輸入流
@property (nullable, retain) NSInputStream *HTTPBodyStream;
//設(shè)置發(fā)送請(qǐng)求時(shí)是否發(fā)送cookie數(shù)據(jù)
@property BOOL HTTPShouldHandleCookies;
//設(shè)置請(qǐng)求時(shí)是否按順序收發(fā) 默認(rèn)禁用 在某些服務(wù)器中設(shè)為YES可以提高網(wǎng)絡(luò)性能
@property BOOL HTTPShouldUsePipelining;
請(qǐng)求回執(zhí)類(lèi)NSURLResponse屬性簡(jiǎn)介
NSURLResponse類(lèi)中存放請(qǐng)求的回執(zhí)信息,在發(fā)送網(wǎng)絡(luò)請(qǐng)求時(shí),如果請(qǐng)求成功,首先會(huì)接收到服務(wù)端的回執(zhí)信息,直接開(kāi)始接收具體的返回?cái)?shù)據(jù)。NSURLResponse對(duì)象中主要有以下屬性:
//請(qǐng)求的URL地址
@property (nullable, readonly, copy) NSURL *URL;
//返回?cái)?shù)據(jù)的數(shù)據(jù)類(lèi)型
@property (nullable, readonly, copy) NSString *MIMEType;
//獲取返回?cái)?shù)據(jù)的內(nèi)容長(zhǎng)度
@property (readonly) long long expectedContentLength;
//獲取返回?cái)?shù)據(jù)的編碼方式
@property (nullable, readonly, copy) NSString *textEncodingName;
//返回拼接的數(shù)據(jù)文件名 以u(píng)rl為名 數(shù)據(jù)沒(méi)醒MIMEType為擴(kuò)展名
@property (nullable, readonly, copy) NSString *suggestedFilename;
對(duì)于HTTP請(qǐng)求,請(qǐng)求回執(zhí)會(huì)被封裝為NSHTTPURLResponse對(duì)象,其中除了有上面那些屬性外,還有如下的擴(kuò)展屬性:
//請(qǐng)求的狀態(tài)碼
@property (readonly) NSInteger statusCode;
//請(qǐng)求頭中所有的字段
@property (readonly, copy) NSDictionary *allHeaderFields;
- iOS 9無(wú)法訪問(wèn)HTTP的解決方法
- iOS9與XCode7中不能使用http連接的快速解決辦法
- iOS中使用NSURLConnection處理HTTP同步與異步請(qǐng)求
- iOS應(yīng)用開(kāi)發(fā)中AFNetworking庫(kù)的常用HTTP操作方法小結(jié)
- HTTP/2 協(xié)議用于 iOS 推送提醒服務(wù) (APNS)
- 判斷iOS應(yīng)用是否開(kāi)放HTTP權(quán)限的方法
- iOS通過(guò)http post上傳圖片
- iOS應(yīng)用中發(fā)送HTTP的get請(qǐng)求以及HTTP異步請(qǐng)求的方法
- iOS9蘋(píng)果將原h(huán)ttp協(xié)議改成了https協(xié)議的方法
- IOS10.11 無(wú)法訪問(wèn)http的問(wèn)題解決辦法
相關(guān)文章
iOS開(kāi)發(fā)實(shí)現(xiàn)音頻播放功能
本文給大家分享的是在IOS開(kāi)發(fā)過(guò)程中實(shí)現(xiàn)音頻播放的功能,講解的十分細(xì)致,有需要的小伙伴可以參考下2016-03-03IOS百度地圖導(dǎo)航開(kāi)發(fā)功能實(shí)現(xiàn)簡(jiǎn)述
百度地圖導(dǎo)航非常實(shí)用,那么基于代碼是如何實(shí)現(xiàn)的呢,下面通過(guò)本文給大家介紹IOS百度地圖導(dǎo)航開(kāi)發(fā)功能實(shí)現(xiàn)簡(jiǎn)述,需要的朋友可以參考下本文2016-03-03iOS實(shí)現(xiàn)高性能簡(jiǎn)單易用的星星評(píng)分控件
在做APP時(shí)會(huì)用到星星評(píng)分的一個(gè)視圖,在網(wǎng)上也找到一些相關(guān)的代碼,下面這篇文章主要給大家介紹了關(guān)于iOS實(shí)現(xiàn)高性能簡(jiǎn)單易用的星星評(píng)分控件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2018-03-03舉例講解iOS開(kāi)發(fā)中拖動(dòng)視圖的實(shí)現(xiàn)
這篇文章主要介紹了舉例講解iOS開(kāi)發(fā)中的拖動(dòng)視圖實(shí)現(xiàn),代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-10-10iOS布局渲染之UIView方法的調(diào)用時(shí)機(jī)詳解
在你剛開(kāi)始開(kāi)發(fā) iOS 應(yīng)用時(shí),最難避免或者是調(diào)試的就是和布局相關(guān)的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于iOS布局渲染之UIView方法調(diào)用時(shí)機(jī)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-07-07Flutter?Module添加到iOS項(xiàng)目示例詳解
這篇文章主要為大家介紹了Flutter?Module添加到iOS項(xiàng)目示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08iOS中關(guān)于音樂(lè)鎖屏控制音樂(lè)(鎖屏信息設(shè)置)的實(shí)例代碼
這篇文章主要介紹了 iOS中關(guān)于音樂(lè)鎖屏控制音樂(lè)(鎖屏信息設(shè)置)的實(shí)例代碼,需要的朋友可以參考下2017-01-01