首页 > 代码库 > iOS —— NSURLSessionTask

iOS —— NSURLSessionTask

本章主要介绍抽象类 NSURLSessionTask 的一些基本属性和代理

 

一、NSURLSessionTask

1. NSURLSessionTask 是所有请求任务的基类,也是一个抽象类,所以不能通过它来创建具体的网络请求 task

 

2. 系统为每个 task 分配的唯一标识符

@property (readonly) NSUInteger taskIdentifier; 

 

3. 当前 task 正在访问的请求对象

@property (nullable, readonly, copy) NSURLRequest  *currentRequest;

 

4. 当前 task 上一个访问的请求对象

@property (nullable, readonly, copy) NSURLRequest  *originalRequest; 

 

5. 当前 task 的响应头信息

@property (nullable, readonly, copy) NSURLResponse *response;                

 

6. 当前 task 已经接受的数据大小(单位为字节)

@property (readonly) int64_t countOfBytesReceived;

 

7. 当前 task 所要接受的数据总大小

@property (readonly) int64_t countOfBytesExpectedToReceive;

 

8. 当前 task 已经发送的数据大小

@property (readonly) int64_t countOfBytesSent;

 

9. 当前 task 所要发送的数据总大小

@property (readonly) int64_t countOfBytesExpectedToSend;

 

10. 设置 task 的描述信息

@property (nullable, copy) NSString *taskDescription;

 

11. 如果 task 请求失败时的错误信息

@property (nullable, readonly, copy) NSError *error;

 

12. 当前 task 的请求状态

@property (readonly) NSURLSessionTaskState state;

NSURLSessionTaskState 是一个枚举,如下

1 typedef NS_ENUM(NSInteger, NSURLSessionTaskState) {
2     NSURLSessionTaskStateRunning = 0,    // 当前 task 正在接受数据
3     NSURLSessionTaskStateSuspended = 1,  // 当前 task 被暂停
4     NSURLSessionTaskStateCanceling = 2,  // 当前 task 被取消,会调用 NSURLSessionTaskDelegate 的 task:didCompleteWithError: 消息
5     NSURLSessionTaskStateCompleted = 3,  // 当前 task 已经完成
6 } NS_ENUM_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0);

 

13. 开始 task,所有 task 在创建后都要调用该方法才能开始请求

- (void)resume;

 

14. 暂停 task,会调用 NSURLSessionTaskDelegate 的 task:didCompleteWithError: 方法

- (void)cancel;

 

15. 暂停 task

- (void)suspend;

 

iOS —— NSURLSessionTask