nullable UIImage *)placeholderImage success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse response, UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse response, UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse response, UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse
nullable UIImage *)placeholderImage success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse response, UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse response, UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse response, UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse
success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse success:(void (^)(NSURLRequest * _Nonnull, NSHTTPURLResponse failure:(void (^)(NSURLRequest * _Nonnull, NSHTTPURLResponse *, UIImage*); @property (nonatomic, copy) void (^failureBlock)(NSURLRequest*, NSHTTPURLResponse*, NSError )initWithUUID:(NSUUID *)uuid success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse
NSProgress * _Nullable __autoreleasing * _Nullable)progress success:(nullable NSString * (^)(NSHTTPURLResponse NSProgress * _Nullable __autoreleasing * _Nullable)progress success:(nullable NSData * (^)(NSHTTPURLResponse NSProgress * _Nullable __autoreleasing * _Nullable)progress success:(nullable NSData * (^)(NSHTTPURLResponse [self loadRequest:request MIMEType:nil textEncodingName:nil progress:progress success:^NSData *(NSHTTPURLResponse self.af_URLSessionTask = dataTask; 这里逻辑也是很清晰了吧,如果存在错误,那么就回调failure(error),否则就说明没有失败,那么就进行回调success((NSHTTPURLResponse
下面我们看一下验证过程,主要对应下面这段代码 - (BOOL)validateResponse:(NSHTTPURLResponse *)response data (a) 最外层的判断 最外层的判断主要是 if (response && [response isKindOfClass:[NSHTTPURLResponse class]]) 就是如果response 不是nil,并且response的类型是NSHTTPURLResponse。 [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { if (! [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { if (!
UIImage *)placeholderImage success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse response, UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse UIImage *)placeholderImage success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse ]; } } failure:^(NSURLRequest * _Nonnull request, NSHTTPURLResponse ]; } } failure:^(NSURLRequest * _Nonnull request, NSHTTPURLResponse
placeholderImage:(UIImage *)placeholderImage success:(void (^)(NSURLRequest *request, NSHTTPURLResponse Nullable response, UIImage *image))success failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse withReceiptID:downloadID success:^(NSURLRequest * _Nonnull request, NSHTTPURLResponse success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse
NSURLRequest *request, NSURLResponse *redirectResponse) { if (redirectResponse) { NSHTTPURLResponse *response = (NSHTTPURLResponse *)redirectResponse; NSString *cookieString = [[response
---- AFXMLParserResponseSerializer 我们看一下协议的实现 - (id)responseObjectForResponse:(NSHTTPURLResponse *)response [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { if (! [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { if (! [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { if (! [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { if (!
URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse nullable UIImage *)placeholderImage success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse response, UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse UIImage *image))success failure:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse UIImage *)placeholderImage success:(nullable void (^)(NSURLRequest *request, NSHTTPURLResponse
SAFE_RELEASE(theConnection); NSLog(@"safe release connection"); } if ([response isKindOfClass:[NSHTTPURLResponse class]]){ NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; if ((([httpResponse
实现方法中,只有[self validateResponse:(NSHTTPURLResponse *)response data:data error:error]验证response是否合规的方法。 - (BOOL)validateResponse:(NSHTTPURLResponse *)response data:(NSData *)data responseIsValid = YES; NSError *validationError = nil; if (response && [response isKindOfClass:[NSHTTPURLResponse NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: %@ (%ld)", @"AFNetworking", nil), [NSHTTPURLResponse 在解析图片数据时,用到了函数static UIImage * AFInflatedImageFromResponseWithDataAtScale(NSHTTPURLResponse *response
而后面的解析类都是遵守这个协议方法,去做数据解析 AFHTTPResponseSerializer: - (id)responseObjectForResponse:(NSHTTPURLResponse [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { if (! 是否合法标识 BOOL responseIsValid = YES; // 验证的error NSError *validationError = nil; // 如果存在且是NSHTTPURLResponse if (response && [response isKindOfClass:[NSHTTPURLResponse class]]) { //主要判断自己能接受的数据类型和response [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { //error为空,或者有错误
AFGDataXMLRequestOperationXMLDocumentRequestOperationWithRequest:requestsuccess: ^(NSURLRequest * request,NSHTTPURLResponse XMLDocumentFirst Node Name: %@", [elemattributeForName:@"name"]); } failure:^(NSURLRequest *request,NSHTTPURLResponse
(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse
didReceiveResponse:(NSURLResponse *)response { //清空图片数据 [_imageData setLength:0]; //强制转换 NSHTTPURLResponse *resp = (NSHTTPURLResponse *)response; _length = [[resp.allHeaderFields objectForKey:@"Content-Length
data error:(NSError *__autoreleasing *)error { [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]; return data; } - (BOOL)validateResponse:(NSHTTPURLResponse * responseIsValid = YES; NSError *validationError = nil; if (response && [response isKindOfClass:[NSHTTPURLResponse NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: %@ (%ld)", @"AFNetworking", nil), [NSHTTPURLResponse
(cfEncoding); } } // Handle HTTP errors if ([response isKindOfClass:[NSHTTPURLResponse class]] && ((NSHTTPURLResponse *)response).statusCode ! NSLocalizedDescriptionKey: rawText}; } error = [NSError errorWithDomain:@"JSServer" code:((NSHTTPURLResponse
(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task willPerformHTTPRedirection:(NSHTTPURLResponse
(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { //NSHTTPURLResponse *res = (NSHTTPURLResponse *)response; //NSLog(@"%@",[res allHeaderFields]); } -(void)connection