iOS的HTTP請求和請求回執類用法小結_IOS

來源:互聯網
上載者:User

請求類NSURLRequest
NSURLRequest類中常用方法和屬性總結:

//通過類方法建立預設的請求對象
/*
通過這種方式建立的請求對象 預設使用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;
NSURLRequest請求類除了在初始化時可以設定一些屬性,建立出來後則大部分屬性都為唯讀,無法設定與修改。另一個類NSMutableURLRequest可以更加靈活的佈建要求的相關屬性。

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;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.