-
Manager 的创建
// AFHTTPSessionManager
AFHTTPSessionManager *manager1 = [AFHTTPSessionManager manager];
NSURL *baseURL2 = [NSURL URLWithString:@"http://192.168.88.200"];
AFHTTPSessionManager *manager2 = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL2];
NSURL *baseURL3 = [NSURL URLWithString:@"http://192.168.88.200"];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
AFHTTPSessionManager *manager3 = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL3 sessionConfiguration:config];
// AFURLSessionManager
AFURLSessionManager *manager4 = [[AFURLSessionManager alloc]
initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
// 取消挂起的 task
[[AFURLSessionManager alloc] invalidateSessionCancelingTasks:YES];
-
URLRequest 的创建
NSURL *url1 = [NSURL URLWithString:@"http://192.168.88.200:8080/MJServer/video?type=JSON"];
NSURL *url2 = [NSURL URLWithString:@"http://192.168.88.200:8080/MJServer/video"];
NSString *urlStr = @"http://192.168.88.200:8080/MJServer/video";
NSDictionary *params = @{@"type":@"JSON"};
// GET 创建方式
NSURLRequest *request1 = [NSURLRequest requestWithURL:url1];
NSURLRequest *request2 = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"GET"
URLString:urlStr
parameters:params
error:NULL];
// POST 创建方式
NSMutableURLRequest *request3 = [NSMutableURLRequest requestWithURL:url2];
request3.HTTPMethod = @"POST";
request3.HTTPBody = [@"type=JSON" dataUsingEncoding:NSUTF8StringEncoding];
NSURLRequest *request4 = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST"
URLString:urlStr
parameters:params
error:NULL];
NSURLRequest *request5 = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST"
URLString:urlStr
parameters:params
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
} error: NULL];
-
Request 的设置
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://192.168.88.200:8080/MJServer/video?type=JSON"]];
// 设置参数编码方式
/*
`NSUTF8StringEncoding` by default
*/
manager.requestSerializer.stringEncoding = NSUTF8StringEncoding;
// 设置缓存策略
/*
`NSURLRequestUseProtocolCachePolicy` by default.
*/
manager.requestSerializer.cachePolicy = NSURLRequestUseProtocolCachePolicy;
request.cachePolicy = NSURLRequestUseProtocolCachePolicy;
// 设置网络服务类型
/*
`NSURLNetworkServiceTypeDefault` by default.
*/
manager.requestSerializer.networkServiceType = NSURLNetworkServiceTypeDefault;
request.networkServiceType = NSURLNetworkServiceTypeDefault;
// 设置请求超时时间
/*
The default timeout interval is 60 seconds.
*/
manager.requestSerializer.timeoutInterval = 15;
request.timeoutInterval = 15;
// 是否允许蜂窝网络访问
/*
`YES` by default.
*/
manager.requestSerializer.allowsCellularAccess = YES;
request.allowsCellularAccess = YES;
// 设置是否应用默认的 Cookies
/*
`YES` by default.
*/
manager.requestSerializer.HTTPShouldHandleCookies = YES;
request.HTTPShouldHandleCookies = YES;
// 设置是否使用 Pipelining
/*
`NO` by default.
*/
manager.requestSerializer.HTTPShouldUsePipelining = NO;
request.HTTPShouldUsePipelining = NO;
// 请求头设置
[manager.requestSerializer setValue:@"iPhone" forHTTPHeaderField:@"User-Agent"];
[request setValue:@"iPhone" forHTTPHeaderField:@"User-Agent"];
// 设置用户验证
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"admin" password:@"adminpasswd"];
NSString *username = @"admin";
NSString *password = @"adminpasswd";
NSString *userPasswordString = [NSString stringWithFormat:@"%@:%@", username, password];
NSData *userPasswordData = [userPasswordString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64EncodedCredential = [userPasswordData base64EncodedStringWithOptions:0];
NSString *authString = [NSString stringWithFormat:@"Basic: %@", base64EncodedCredential];
[request setValue:authString forHTTPHeaderField:@"Authorization"];
// 清除用户验证信息
[manager.requestSerializer clearAuthorizationHeader];
[request setValue:nil forHTTPHeaderField:@"Authorization"];
// 设置请求体
request.HTTPBody = [@"type=JSON" dataUsingEncoding:NSUTF8StringEncoding];
// 设置请求模式
// 单独设置
/*
默认是 GET
*/
request.HTTPMethod = @"POST";
// 直接设置
NSString *urlStr = @"http://192.168.88.200:8080/MJServer/video";
NSDictionary *parameters = @{@"type":@"XML"};
NSURLRequest *request1 = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST"
URLString:urlStr
parameters:parameters
error:NULL];
-
设置数据请求格式
NSString *urlStr = @"http://example.com";
NSDictionary *parameters = @{@"foo": @"bar", @"baz": @[@1, @2, @3]};
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 二进制 格式
// POST http://example.com/
// Content-Type: application/x-www-form-urlencoded
// foo=bar&baz[]=1&baz[]=2&baz[]=3
manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 默认
NSURLRequest *request1 = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST"
URLString:urlStr
parameters:parameters
error:NULL];
// JSON 格式
// POST http://example.com/
// Content-Type: application/json
// {"foo": "bar", "baz": [1,2,3]}
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSURLRequest *request2 = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST"
URLString:urlStr
parameters:parameters
error:NULL];
// Plist 格式
manager.requestSerializer = [AFPropertyListRequestSerializer serializer];
NSURLRequest *request3 = [[AFPropertyListRequestSerializer serializer] requestWithMethod:@"POST"
URLString:urlStr
parameters:parameters
error:NULL];
-
设置数据响应格式
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
AFURLSessionManager *manager1 = [[AFURLSessionManager alloc]
initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
// 二进制
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
// JSON,默认,application/json, text/json, text/javascript
manager.responseSerializer = [AFJSONResponseSerializer serializer];
// XMLParser,SAX 解析
manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
// Plist
manager.responseSerializer = [AFPropertyListResponseSerializer serializer];
// Image
manager.responseSerializer = [AFImageResponseSerializer serializer];
// Compound
manager.responseSerializer = [AFCompoundResponseSerializer serializer];
-
AFHTTPSessionManager 请求
// GET
// DEPRECATED_ATTRIBUTE
- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
- (nullable NSURLSessionDataTask *)GET:(NSString *)URLString
parameters:(nullable id)parameters
progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgress
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
// HEAD
- (nullable NSURLSessionDataTask *)HEAD:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(NSURLSessionDataTask *task))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
// POST
// DEPRECATED_ATTRIBUTE
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(nullable id)parameters
progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
// DEPRECATED_ATTRIBUTE
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(nullable id)parameters
constructingBodyWithBlock:(nullable void (^)(id <AFMultipartFormData> formData))block
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
- (nullable NSURLSessionDataTask *)POST:(NSString *)URLString
parameters:(nullable id)parameters
constructingBodyWithBlock:(nullable void (^)(id <AFMultipartFormData> formData))block
progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgress
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
// PUT
- (nullable NSURLSessionDataTask *)PUT:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
// PATCH
- (nullable NSURLSessionDataTask *)PATCH:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
// DELETE
- (nullable NSURLSessionDataTask *)DELETE:(NSString *)URLString
parameters:(nullable id)parameters
success:(nullable void (^)(NSURLSessionDataTask *task, id _Nullable responseObject))success
failure:(nullable void (^)(NSURLSessionDataTask * _Nullable task, NSError *error))failure;
-
AFURLSessionManager 请求
// Data Tasks
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
completionHandler:(nullable void (^)(NSURLResponse *response,
id _Nullable responseObject,
NSError * _Nullable error))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;
// Upload Tasks
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
fromFile:(NSURL *)fileURL
progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgressBlock
completionHandler:(nullable void (^)(NSURLResponse *response,
id _Nullable responseObject,
NSError * _Nullable error))completionHandler;
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request
fromData:(nullable NSData *)bodyData
progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgressBlock
completionHandler:(nullable void (^)(NSURLResponse *response,
id _Nullable responseObject,
NSError * _Nullable error))completionHandler;
- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request
progress:(nullable void (^)(NSProgress *uploadProgress))uploadProgressBlock
completionHandler:(nullable void (^)(NSURLResponse *response,
id _Nullable responseObject,
NSError * _Nullable error))completionHandler;
// Download Tasks
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request
progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgressBlock
destination:(nullable NSURL * (^)(NSURL *targetPath,
NSURLResponse *response))destination
completionHandler:(nullable void (^)(NSURLResponse *response,
NSURL * _Nullable filePath,
NSError * _Nullable error))completionHandler;
- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData
progress:(nullable void (^)(NSProgress *downloadProgress))downloadProgressBlock
destination:(nullable NSURL * (^)(NSURL *targetPath,
NSURLResponse *response))destination
completionHandler:(nullable void (^)(NSURLResponse *response,
NSURL * _Nullable filePath,
NSError * _Nullable error))completionHandler;