AFNetworking 원리 및 일반적인 작업
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 }]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.