AFNetworking 원리 및 일반적인 작업

19504 단어

AFN의 6대 모듈


NSURLconnection은 주로 NSURLconnection에 대해 진일보한 봉인을 진행했는데 다음과 같은 핵심 클래스를 포함한다.
AFURLConnectionOperation
AFHTTPRequestOperationManager
AFHTTPRequestOperation

NSURLsession, 주요 객체 NSURLSession 객체는 다음과 같은 핵심 클래스를 포함하는 추가 패키지를 제공합니다.
AFURLSessionManager
AFHTTPSessionManager

Reachability는 다음과 같은 핵심 클래스를 포함하는 네트워크 상태와 관련된 운영 인터페이스를 제공합니다.
AFNetworkReachabilityManager

Security는 보안 관련 운영 인터페이스를 제공하며 다음과 같은 핵심 클래스를 포함합니다.
AFSecurityPolicy

Serialization은 다음과 같은 핵심 클래스를 포함하는 분석 데이터와 관련된 운영 인터페이스를 제공합니다.
AFURLRequestSerialization
AFURLResponseSerialization

UIKit은 대량의 네트워크 요청 과정 중 UI 인터페이스 표시와 관련된 조작 인터페이스를 제공한다. 일반적으로 네트워크 요청 과정에서 사용자의 상호작용을 더욱 우호적으로 하는 데 사용되며 다음과 같은 핵심 분류/클래스를 포함한다.
AFNetworkActivityIndicatorManager
UIActivityIndicatorView+AFNetworking
UIAlertView+AFNetworking
UIButton+AFNetworking
UIImageView+AFNetworking
UIKit+AFNetworking
UiprogressView+AFNetworking
UIRefreshControl+AFNetworking
UIWebView+AFNetworking

AFURLSessionManager


작업 작성 방법
일반 퀘스트
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLResponse *response, id responSEObject, NSError *error))completionHandler /** * request:  * completionHandler: Block * response:  * responseObject:  * error:  */
업로드 작업
// 1.  
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler /** * fileURL:  */ // 2.  NSData  - (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler /** * bodyData:  */ // 3.   - (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler /** * request:  */
작업 다운로드
// 1.  
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request progress:(NSProgress * __autoreleasing *)progress destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler /** * progress:  * destination: Block * targetPath:  *   */ // 2.   - (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData progress:(NSProgress * __autoreleasing *)progress destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler /** * progress:  * resumeData:  */ 

AFHTTPSessionManager


공통 속성
baseURL(NSURL*), 네트워크 접근성 및 작성 요청 객체 모니터링RequestSerializer(AFHTTPRequestSerializer*), GET, HEAD 및 DELETE 요청 매개 변수의 해석 형식을 지정responseseserializer(AFHTTPresponseseserializer*), 서버가 데이터를 반환하는 형식을 지정합니다.

상용 방법
초기화
// 1.  AFHTTPSessionManager 
+ (instancetype)manager
// 2.  AFHTTPSessionManager 
- (instancetype)initWithBaseURL:(NSURL *)url /** *  url AFHTTPSessionManager  */ - (instancetype)initWithBaseURL:(NSURL *)url sessionConfiguration:(NSURLSessionConfiguration *)configuration /** *  url configuration AFHTTPSessionManager  */
요청 데이터
// 1. GET  - (NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure /** * URLString:  * parameters:  * success: Block * responseObject:  * failure: Block * error:  */ // 2. POST  - (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure /** *  GET  */ - (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure /** * block:  */

AFN을 사용하여 네트워크 데이터 요청


데이터 요청(xml/JSON)
AFHTTPSessionManager 객체 만들기
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
서버에 대한 반환 데이터 형식 지정
// XML  manager.responseSerializer = [AFXMLParserResponseSerializer serializer]; // JSON  manager.responseSerializer = [AFJSONResponseSerializer serializer];
요청체 설정 XML JSON
//   NSDictionary *params = @{ @"username" : @" ", @"pwd" : @" ", @"type" : @"XML/JSON" }; 
요청 보내기
[manager GET:@" " parameters:params success:^(NSURLSessionDataTask *task, id responseObject) { //responseObject:  NSLog(@" "); } failure:^(NSURLSessionDataTask *task, NSError *error) { //error:  NSLog(@" "); }];

데이터 업로드
AFHTTPSessionManager 객체 만들기
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
업로드 작업 만들기
/** NSURLConnection*/ [manager POST:@" " parameters:@{@" " : @" " constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { //  NSData *data = [NSData dataWithContentsOfFile:@" "]; [formData appendPartWithFileData:data name:@"file" fileName:@"test.png" mimeType:@"image/png"]; } success:^(NSURLSessionDataTask *task, id responseObject) { //  } failure:^(NSURLSessionDataTask *task, NSError *error) { //  }]; /** NSURLSession*/ [manager uploadTaskWithRequest:request fromData:data progress:progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { //  }];

데이터 다운로드
AFHTTPSessionManager 객체 만들기
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
다운로드 작업 만들기
/** NSURLSession*/ [manager downloadTaskWithRequest:request progress:progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { //  Block } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { // Block }]

좋은 웹페이지 즐겨찾기