2016-03-31 13 views
1

Ich habe einen Anwendungsfall, in dem ich eine Rest-API für die Authentifizierung auf Apple TV abfragen muss. Ich bekomme eine veraltete Antwort Antwort für 90-120 Sekunden, nach der ich richtige JSON Antwort bekomme. Unten ist mein CodeNSURLRequest mit cachePolicy ReloadIgnoringCacheData gibt veraltete Daten zurück

static func getFileNoCache(url:NSURL?, completionHandler:(NSData?, String?)->Void) { 
    if let fileUrl = url { 
     let request = NSURLRequest(URL: fileUrl, cachePolicy: .ReloadIgnoringCacheData, timeoutInterval: 5) 
     let dataTask = NSURLSession.sharedSession().dataTaskWithRequest(request, 
      completionHandler: { data, response, error in 
       if let err = error { 
        // failed ! 
        print("!! Error - Download Failed \n\t\(fileUrl) reason:\(err.localizedDescription)") 
        completionHandler (nil, err.localizedDescription) 
        return 
       } 

       if let statusCode = (response as? NSHTTPURLResponse)?.statusCode { 
        if statusCode == 200 { 
         completionHandler(data, nil) 
        } 
        else { 
         completionHandler (nil, "Message") 
        } 
       } 
       else { 
        completionHandler (nil, "Invalid response") 
        print("!! Error - Downloading EPG Config") 
       } 
     }) 
     dataTask.resume() 
    } 
} 

ich wirklich ahnungslos bin was

+0

Dies könnte aufgrund von Server-Caching oder Verwendung eines Proxy-cdn wie cloudflare, haben Sie versucht, die Anforderungen separat mit etwas wie Postbote machen? – Scriptable

Antwort

0

falsch gehen könnte eine beliebige Anzahl von Dingen, von Proxies Server-seitiges Caching auf Fehler im Verhalten des gemeinsamen Sitzung.

Versuchen Sie, den Cache vollständig, indem Sie Ihre eigene Session-Konfiguration zu deaktivieren, das Setzen von seiner Urlcache Eigenschaft auf nil, dann auf dieser Konfiguration eine Sitzung auf Basis zu schaffen.

Wenn das nicht funktioniert, dann ist das Caching ist in Ihrem Gerät nicht, und Ihre beste Wette ist, einen Cache-buster an die URL hinzuzufügen (z & ignoredParameter = monotonically_increasing_number).