ASIHTTPRequest Download-cache problem - nicht in der Lage zu speichern/laden Datum im cache
Ich versuche das speichern von Daten in den cache mit ASIHTTP (http://allseeing-i.com/ASIHTTPRequest/How-to-use#using_a_download_cache). Ich bin nicht sicher, was ich falsch mache, aber es scheint nicht zu sein, speichern von Daten in den cache. Die Ausgabe der folgende code ist:
2010-08-12 15:44:13.801 TabBar[51728:207] Success is YES
2010-08-12 15:44:13.802 TabBar[51728:207] Success is NO
2010-08-12 15:44:13.804 TabBar[51728:207] Success is YES
2010-08-12 15:44:13.805 TabBar[51728:207] S-----------
2010-08-12 15:44:13.874 TabBar[51728:207] Success is YES
2010-08-12 15:44:13.874 TabBar[51728:207] Success is NO
2010-08-12 15:44:13.876 TabBar[51728:207] Success is YES
Hier ist der code:
[[ASIDownloadCache sharedCache] clearCachedResponsesForStoragePolicy:
ASICacheForSessionDurationCacheStoragePolicy];
[[ASIDownloadCache sharedCache]
setDefaultCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL
URLWithString:@"http://www.nytimes.com/"]];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request startSynchronous];
request = [ASIHTTPRequest requestWithURL:[NSURL
URLWithString:@"http://www.nytimes.com/"]];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request startSynchronous];
BOOL success = ([request responseStatusCode] == 200);
NSLog(@"Success is %@\n", (success ? @"YES" : @"NO"));
success = [request didUseCachedResponse];
NSLog(@"Success is %@\n", (success ? @"YES" : @"NO"));
success = ([[request responseData] length]);
NSLog(@"Success is %@\n", (success ? @"YES" : @"NO"));
NSLog(@"S-----------");
request = [ASIHTTPRequest requestWithURL:[NSURL
URLWithString:@"http://www.nytimes.com/"]];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request startSynchronous];
success = ([request responseStatusCode] == 200);
NSLog(@"Success is %@\n", (success ? @"YES" : @"NO"));
success = [request didUseCachedResponse];
NSLog(@"Success is %@\n", (success ? @"YES" : @"NO"));
success = ([[request responseData] length]);
NSLog(@"Success is %@\n", (success ? @"YES" : @"NO"));
Kann jemand geben Sie mir einige code-snippet, wie Sie dies bewerkstelligen?
Dank!
-----------------------------------------------------------------------
NEUE CODE VERSION:
NSURL *url = [NSURL URLWithString:imageURL];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[request setCachePolicy:ASIOnlyLoadIfNotCachedCachePolicy];
[request setSecondsToCache:60*60*24*30]; //Cache for 30 days
[request startSynchronous];//startAsynchronous];
BOOL success = [request didUseCachedResponse];
NSLog(@"------------>>>>>>> Success is %@\n", (success ? @"YES" : @"NO"));
NSData *responseData = [request responseData];
UIImage *image = [[UIImage alloc] initWithData:responseData];
Diese funktioniert nur mit [Anfrage startSynchronous]; wenn ich versuche, Asynchrone Methode, es dosent rufen Sie diese Funktion:
- (void)requestFinished:(ASIHTTPRequest *)request
- Ich wollte sagen, die Daten, nicht das Datum im Titel 😛
- Es wäre schön, wenn Sie konnten, formatieren Sie den code sinnvoll.
- ok sicher :).....
Du musst angemeldet sein, um einen Kommentar abzugeben.
nytimes.com legt eine Menge von "don' T cache-mich" Art-Header:
Also ich würde erwarten, dass diese das problem sind.
Sie könnten versuchen, Einstellung:
Ihnen fehlt etwas wie dieses,
Und sollten Sie auch haben
Dies sollte den trick tun.