AFHTTPSessionManager : AFURLSessionManager 继承
是AFURLSessionManager的遍历方法
NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];
[NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo
[NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz
[NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo
[NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo
[NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/
[NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/
baseURL 的讲解
// 下面是基本属性
@property (readonly, nonatomic, strong, nullable) NSURL *baseURL; // 基本的baseURL
@property (nonatomic, strong) AFHTTPRequestSerializer <AFURLRequestSerialization> * requestSerializer; // 请求系列化
@property (nonatomic, strong) AFHTTPResponseSerializer <AFURLResponseSerialization> * responseSerializer; // 响应系列化
@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; // 安全策略
+ (instancetype)manager; // 单例的管理者
- (instancetype)initWithBaseURL:(nullable NSURL *)url; // 初始化基础的baseURL
- (instancetype)initWithBaseURL:(nullable NSURL *)url
sessionConfiguration:(nullable NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; // 基于url进行配置configuration
// GET 、 Head 、POST(基本数据post, martipart数据post)、PUT、PATCH、DELETE、
/**
Creates an `NSURLSessionDataTask` with a custom `HTTPMethod` request.
@param method 方法
@param URLString 请求URL
@param parameters 请求参数
@param headers 请求头部
@param uploadProgress 上传的进度
@param downloadProgress 下载的进度
@param success 成功的回调
@param failure 失败的回调
@see -dataTaskWithRequest:uploadProgress:downloadProgress:completionHandler:
*/
- (nullable NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method
URLString:(NSString *)URLString
parameters:(nullable id)parameters
headers:(nullable NSDictionary <NSString *, NSString *> *)headers
uploadProgress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress
downloadProgress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
PS :
1 ) 对AFURLSessionManager 底层的方法封装,对get、post等便利的方法
2 ) 上传文件内容 , 这个调用的是上传的
AFURLSessionManager 的接口
Notifications通知
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidResumeNotification; // resume 调用
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteNotification; // 网络任务完成
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidSuspendNotification; // 任务闲置
FOUNDATION_EXPORT NSString * const AFURLSessionDidInvalidateNotification; // 回话已经无效
FOUNDATION_EXPORT NSString * const AFURLSessionDownloadTaskDidMoveFileSuccessfullyNotification; // 下载任务已经移动文件成功
FOUNDATION_EXPORT NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification; // 下载任务已经移动文件成功
// 下载文件,默认是下载到tmp临时文件夹下面
//移动到目标文件夹下面是否合适
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteResponseDataKey;
// 任务已经完成响应的key
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey; // 存放response的
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey; // 存放responseSerializer的
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteAssetPathKey; // 任务完成集合路径的key
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteErrorKey; // 任务已经完成的错误的key
FOUNDATION_EXPORT NSString * const AFNetworkingTaskDidCompleteSessionTaskMetrics; // 举证,用于统计
基本内容
@property (readonly, nonatomic, strong) NSURLSession *session;// 回话
@property (readonly, nonatomic, strong) NSOperationQueue *operationQueue; // 操作队列
@property (nonatomic, strong) id <AFURLResponseSerialization> responseSerializer; // 响应系列化
@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; // 安全策略
@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; // 可达的对象
///----------------------------
/// @name Getting Session Tasks
///----------------------------
@property (readonly, nonatomic, strong) NSArray <NSURLSessionTask *> *tasks; // 任务数组, 数据上传和下载任务运行通过管理回话
@property (readonly, nonatomic, strong) NSArray <NSURLSessionDataTask *> *dataTasks; // 数据任务,数据任务当前运行通过管理回话
@property (readonly, nonatomic, strong) NSArray <NSURLSessionUploadTask *> *uploadTasks; // 上传的任务
@property (readonly, nonatomic, strong) NSArray <NSURLSessionDownloadTask *> *downloadTasks; // 下载的任务
///-------------------------------
/// @name Managing Callback Queues 管理回调的队列
///-------------------------------
@property (nonatomic, strong, nullable) dispatch_queue_t completionQueue; // 完成的队列
@property (nonatomic, strong, nullable) dispatch_group_t completionGroup; // 完成的组
///---------------------
/// @name Initialization 初始化
///---------------------
- (instancetype)initWithSessionConfiguration:(nullable NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; // 通过配置来进行初始化
- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks resetSession:(BOOL)resetSession; // 取消的任务处理
///-------------------------
/// @name Running Data Tasks 运行数据任务
///-------------------------
/**
创建是一个指定的NSURLSessionDataTask请求。
@param request http的请求
@param uploadProgressBlock 上传进度block
@param downloadProgressBlock 下载的进度block
@param completionHandler 完成回调
*/
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
uploadProgress:(nullable void (^)(NSProgress *uploadProgress))uploadProgressBlock
downloadProgress:(nullable void (^)(NSProgress *downloadProgress))downloadProgressBlock
completionHandler:(nullable void (^)(NSURLResponse *response, id _Nullable responseObject, NSError * _Nullable error))completionHandler; // 下载任务
//包括:常规的请求、上传、下载
///---------------------------------
/// @name Getting Progress for Tasks 任务的获取进度
///---------------------------------
- (nullable NSProgress *)uploadProgressForTask:(NSURLSessionTask *)task; //上传的任务进度
- (nullable NSProgress *)downloadProgressForTask:(NSURLSessionTask *)task; // 下载进度
///-----------------------------------------
/// @name Setting Session Delegate Callbacks 设置回话的代理回调
///-----------------------------------------
// 回话变成无效的block
- (void)setSessionDidBecomeInvalidBlock:(nullable void (^)(NSURLSession *session, NSError *error))block;
// 接收验证
- (void)setSessionDidReceiveAuthenticationChallengeBlock:(nullable NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * _Nullable __autoreleasing * _Nullable credential))block;
// 新body流的回调
- (void)setTaskNeedNewBodyStreamBlock:(nullable NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block;
// 设置授权
- (void)setAuthenticationChallengeHandler:(id (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, void (^completionHandler)(NSURLSessionAuthChallengeDisposition , NSURLCredential * _Nullable)))authenticationChallengeHandler;
// 发送主体数据block
- (void)setTaskDidSendBodyDataBlock:(nullable void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block;
// 完成block
- (void)setTaskDidCompleteBlock:(nullable void (^)(NSURLSession *session, NSURLSessionTask *task, NSError * _Nullable error))block;
// 完成任务收集的, 矩阵统计
#if AF_CAN_INCLUDE_SESSION_TASK_METRICS
- (void)setTaskDidFinishCollectingMetricsBlock:(nullable void (^)(NSURLSession *session, NSURLSessionTask *task, NSURLSessionTaskMetrics * _Nullable metrics))block AF_API_AVAILABLE(ios(10), macosx(10.12), watchos(3), tvos(10));
#endif
///-------------------------------------------
/// @name Setting Data Task Delegate Callbacks 数据任务代理回调
///-------------------------------------------
// 设置数据已经接收响应
- (void)setDataTaskDidReceiveResponseBlock:(nullable NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block;
// 数据任务已经完成下载任务block
- (void)setDataTaskDidBecomeDownloadTaskBlock:(nullable void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block;
// 设置数据任务已经接收数据block
- (void)setDataTaskDidReceiveDataBlock:(nullable void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block;
// 设置数据将会缓存响应block
- (void)setDataTaskWillCacheResponseBlock:(nullable NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block;
// 背景URL回话的事件
- (void)setDidFinishEventsForBackgroundURLSessionBlock:(nullable void (^)(NSURLSession *session))block AF_API_UNAVAILABLE(macos);
///-----------------------------------------------
/// @name Setting Download Task Delegate Callbacks 下载任务的回调
///-----------------------------------------------
// 完成下载的回调
- (void)setDownloadTaskDidFinishDownloadingBlock:(nullable NSURL * _Nullable (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block;
// 下数据的回调
- (void)setDownloadTaskDidWriteDataBlock:(nullable void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block;
// 下载任务已经启动
- (void)setDownloadTaskDidResumeBlock:(nullable void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block;
网友评论