Вы можете использовать NSURLProtocol
sublcass для перехвата всех запросов и ответов, сгенерированных UIWebView
(но не (!) WKWebView
).
В AppDelegate
в ...didFinishLaunchingWithOptions
:
[NSURLProtocol registerClass:[MyCustomProtocol class]];
Это заставит MyCustomProtocol
обрабатывать все сетевые запросы.
В реализации MyCustomProtocol
что-то вроде (код не проверен):
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
return YES;
}
+ (NSURLRequest *) canonicalRequestForRequest:(NSURLRequest *)request{
return request;
}
- (id)initWithRequest:(NSURLRequest *)request cachedResponse:(NSCachedURLResponse *)cachedResponse client:(id<NSURLProtocolClient>)client
{
self = [super initWithRequest:request cachedResponse:cachedResponse client:client];
if (self) {
return self;
}
return nil;
}
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler
{
// parse response here for mime-type and content-disposition
if (shouldDownload) {
// handle downloading response.URL
completionHandler(NSURLSessionResponseBecomeDownload);
} else {
completionHandler(NSURLSessionResponseAllow);
}
[self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];
}
Подробнее о NSURLProtocol вы можете найти в примере Apple и здесь