Wysyłam żądanie do interfejsu UIWebView. Na załadowanej stronie są wywołania AJAX. Muszę przeanalizować ruch AJAX, aby określić, czy użytkownik jest zalogowany, czy nie. Dla tej Zainstalowałem NSURLCache w AppDelegate:NSCachedURLResponse zwraca obiekt, ale interfejs UIWebView nie interpretuje treści
MYURLCache *cache = [[MYURLCache alloc] init];
[NSURLCache setSharedURLCache:cache];
Ten MYURLCache klasy poprawnie odbiera ruch, który biegnie przez WebView. Mogę zakończyć tylko połączenia AJAX. Następnie spawnuję własne żądanie wywołań AJAX. Ten zwraca doskonale doskonałą odpowiedź z serwera WWW. Tak więc ostatnim krokiem do zrobienia jest skonstruowanie obiektu zwracającego NSCachedURLResponse. Udało mi się to również, ale widok internetowy po prostu nie robi nic podczas zwracania obiektów. Jeśli zwrócę tylko zero, WebView ładuje wszystko dobrze (zero jest komunikatem dla NSURLCache, że nic nie jest buforowane, więc przeglądarka powinna zacząć ładować je samodzielnie).
- (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;
}
Chcę, aby uiwebview działał w trybie offline.so użyłem http://stackoverflow.com/a/17149902/935381 i zapisałem odpowiedź w katalogu dokumentów. Ale w trybie offline, gdy próbuję uzyskać dostęp do tego przy użyciu NSData * sData = (NSData *) [NSData dataWithContentsOfFile: filePath]; [webview loadData: sData MIMEType: @ "text/html" textEncodingName: nil baseURL: nil]; ale nie wyświetla właściwej treści. to odbiera dane kodowania ... – Hitarth
dzięki, że bardzo mi pomogło – kevinl