NSCachedURLResponse retorna o objeto, mas o UIWebView não interpreta o conteúdo
Estou enviando uma solicitação para um UIWebView. Há chamadas AJAX na página carregada. Preciso analisar o tráfego AJAX para determinar se o usuário está logado ou não. Para fazer isso eu instalei um NSURLCache no AppDelegate:
MYURLCache *cache = [[MYURLCache alloc] init];
[NSURLCache setSharedURLCache:cache];
Essa classe MYURLCache recebe corretamente o tráfego executado pela visualização da Web. Eu posso terminar apenas as chamadas AJAX. Eu então gero uma solicitação própria das chamadas AJAX. Este retorna a resposta perfeitamente boa do servidor web. Portanto, a última etapa a ser feita agora é construir o objeto de retorno NSCachedURLResponse. Eu também consegui isso, mas a webview simplesmente não faz nada ao retornar os objetos. Se eu retornar apenas nil, o WebView carrega tudo bem (nil é a mensagem para o NSURLCache, que nada é armazenado em cache, portanto, o webview deve começar a carregá-lo por conta própria).
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request {
if ([[[request URL] absoluteString] rangeOfString:@"/ajax/"].location == NSNotFound) {
return nil;
} else {
ASIHTTPRequest *asirequest = [ASIHTTPRequest requestWithURL:[request URL]];
[asirequest setValidatesSecureCertificate:NO];
[asirequest startSynchronous];
NSError *error = [asirequest error];
NSData* data = [[asirequest responseString] dataUsingEncoding:NSUTF8StringEncoding];
// Create the cacheable response
NSURLResponse *urlresponse = [[NSURLResponse alloc] initWithURL:[request URL] MIMEType:@"application/json" expectedContentLength:[data length] textEncodingName:@"UTF-8"];
NSCachedURLResponse *cachedResponse = [[NSCachedURLResponse alloc] initWithResponse:urlresponse data:data];
NSLog(@"cachedResponse %@", cachedResponse);
NSLog(@"cachedResponse data %@", [[NSString alloc] initWithData:[cachedResponse data] encoding:NSUTF8StringEncoding]);
return cachedResponse;
}
return nil;
}