네트워크 요청에 대한 밑바닥 판단의 처리

2505 단어
typedef NS_ENUM(NSUInteger, AIFURLResponseStatus) {AIFURLResponseStatusSuccess,//를 기본으로 서버 피드백 성공 여부만 고려합니다. 서명이 정확한지, 반환된 데이터가 완전한지 여부는 상부의 RTApiBaseManager에 의해 결정됩니다. AIFURLResponseStatusErrorTimeout, AIFURLResponseStatusErrorNoNetwork//기본값은 시간 초과를 제외한 오류입니다.};
NSURLSessionDataTask *task = [self.sessionManager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
    NSURLSessionDataTask *storedTask = self.dispatchTable[requestId];
    if (storedTask == nil) {
        //  operation cancel , 。
        return;
    }else{
        [self.dispatchTable removeObjectForKey:requestId];
    }
    NSString *responseString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
    
    if (!error) {
        
        // success
        
        [AIFLogger logDebugInfoWithResponse:(NSHTTPURLResponse*)response
                              resposeString:responseString
                                    request:request
                                      error:NULL];
        
        AIFURLResponse *response = [[AIFURLResponse alloc] initWithResponseString:responseString
                                                                        requestId:requestId
                                                                          request:request
                                                                     responseData:responseObject
                                                                           status:AIFURLResponseStatusSuccess];
        success?success(response):nil;
    }else{
        [AIFLogger logDebugInfoWithResponse:(NSHTTPURLResponse*)response
                              resposeString:responseString
                                    request:request
                                      error:error];

        AIFURLResponse *response = [[AIFURLResponse alloc] initWithResponseString:responseString
                                                                        requestId:requestId
                                                                          request:request
                                                                     responseData:responseObject
                                                                            error:error];
         fail?fail(response):nil;
    }
}];

//요청이 성공했는지는 서버의 피드백을 받았는지만 고려합니다.서명이 정확한지, 반환된 데이터가 완전한지 여부는 상부의 RTApiBaseManager에 의해 결정됩니다.

좋은 웹페이지 즐겨찾기