Der AFNetworking-Modus (AFHttpClient) arbeitet nicht mit der NSURLRequestReturnCacheDataDontLoad-Richtlinie

8

Ich verwende AFNetworking in meiner App und versuche, es im Offline-Modus zu verwenden, indem ich die zwischengespeicherten Daten verwende, falls verfügbar.

Ich habe erwartet, nachdem ich die Anfrage Cache-Richtlinie zu NSURLRequestReturnCacheDataDontLoad, getPath: Parameter: Erfolg: Fehler: Erfolgreich mit den zwischengespeicherten Daten im Offline-Modus. Aber selbst wenn sich Daten im Cache befinden (ich verifiziere, indem ich den Cache mit dem Code überprüfe), wird getPath einfach im Flugzeugmodus fehlschlagen.

Es gab einen Thread in AFNetworking github: Ссылка Aber anscheinend wurde das Problem überhaupt nicht angesprochen. Der Autor von AFNetworking zeigt einfach auf Apples Dokument , und es hieß:

  

NSURLRequestReturnCacheDataDontLoad   Gibt den vorhandenen Cache an   Daten sollten verwendet werden, um eine Anfrage zu erfüllen, unabhängig von ihrem Alter oder   Haltbarkeitsdatum. Wenn keine Daten im Cache vorhanden sind   Entsprechend einer URL-Ladeanforderung wird kein Versuch unternommen, die URL zu laden   Daten von der Ursprungsquelle, und die Last gilt als zu haben   gescheitert. Diese Konstante gibt ein Verhalten an, das einem ähnelt   "Offline" -Modus.

Wie Apple gesagt hat, ist NSURLRequestReturnCacheDataDontLoad genau für den Offline-Modus ausgelegt.

Ich teste in iOS6, ich habe mit NSURLCache und SDURLCache getestet, alle haben das gleiche Ergebnis.

Die Anfrage ist fehlgeschlagen, die Fehlermeldung:

  

2012-12-22 03: 11: 18.988 Testapp [43692: 907] Fehler: Fehler   Domain = NSURLErrorDomain Code = -1009 "Die Internetverbindung scheint zu   offline sein. "UserInfo = 0x211b87c0   {NSErrorFailingURLStringKey = http: //Testapp.com/api/v1/photo/latest/,   NSErrorFailingURLKey = http: //Testapp.com/api/v1/photo/latest/,   NSLocalizedDescription = Die Internetverbindung scheint offline zu sein.,   NSUnderlyingError = 0x211b9720 "Die Internetverbindung scheint zu sein   offline. "}

    
Robert Mao 22.12.2012, 11:25
quelle

1 Antwort

7

Es ist ein Fehler in iOS 6.

Es gibt einen Diskussionsthread in AFNetworking genau für dieses Problem: Ссылка

Danke für die Tipps und Experimente von guykogus zu diesem Thema. Ich habe eine Nacht in dieser Angelegenheit verbracht!

Eine zusammengefasste Umgehung wird die Antwort aus dem Cache gelesen, anstatt die Richtlinie NSURLRequestReturnCacheDataDontLoad zu verwenden:

%Vor%     
Robert Mao 22.12.2012, 21:53
quelle