美文网首页
AFHTTP/URLSessionManager接口

AFHTTP/URLSessionManager接口

作者: helinyu | 来源:发表于2021-11-30 13:49 被阅读0次

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;

相关文章

网友评论

      本文标题:AFHTTP/URLSessionManager接口

      本文链接:https://www.haomeiwen.com/subject/oqarxrtx.html