OC - 17.AFNetworking 원리 및 일반적인 작업

13603 단어

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 요청 매개 변수를 지정하는 해석 형식
  • responseSerializer(AFHTTPResponseSerializer*), 서버가 데이터를 반환하는 형식을 지정합니다
  • 일반적인 방법
  • 초기화
    // 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  formData))block success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure /** * block:  */

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

  • 요청 데이터(XML/JSON)
  • AFHTPSessionManager 개체 만들기
    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(@" "); }];
  • 업로드 데이터
  • AFHTPSessionManager 개체 만들기
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
  • 업로드 작업 만들기
    /** NSURLConnection*/
    [manager POST:@" " parameters:@{@" " : @" " constructingBodyWithBlock:^(id 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) { //  }];
  • 데이터 다운로드
  • AFHTPSessionManager 개체 만들기
    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 }]

  • 전재 대상:https://www.cnblogs.com/funny11/p/4947011.html

    좋은 웹페이지 즐겨찾기