NSURLConnection 废弃之后使用 NSURLSession,NSURLSessionTask 进行重定向

#import "ReplacingImageURLProtocol.h"
#import <UIKit/UIKit.h>

static NSString* const FilteredKey = @"FilteredKey";

@interface ReplacingImageURLProtocol() <NSURLSessionDelegate>

@end

@implementation ReplacingImageURLProtocol

+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
    if ([NSURLProtocol propertyForKey:FilteredKey inRequest:request]) {
        return NO;
    }
    if ([request.URL.absoluteString isEqualToString:@"http://www.baidu.com/"]) {
        return YES;
    }
    return NO;
}

+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
    return request;
}

- (void)startLoading {
    [NSURLProtocol setProperty:@YES forKey:FilteredKey inRequest:self.request];

    NSMutableURLRequest *mutReq = self.request.mutableCopy;
    mutReq.URL = [NSURL URLWithString:@"http://sina.cn/"];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:nil];
    NSURLSessionTask *task = [session dataTaskWithRequest:mutReq];
    [task resume];
}

- (void)stopLoading {
}

#pragma mark ================ NSURLSessionDelegate ================

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler {
    [[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];

    completionHandler(NSURLSessionResponseAllow);
}

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data {
    [[self client] URLProtocol:self didLoadData:data];
}

@end

results matching ""

    No results matching ""