2015-07-14 20 views
6

Burada bir durumum var, arka uç birimimizden belirli bir kaynağı (GET isteği) almak için AFNetworking ile dinlenme API'sini kullanıyorum. Arka uçu tarayıcıyla kontrol ettiğimde sonuç 165'dir, ancak belirli bir cihazda (belirli bir iPhone 6 artı) sonuç 5'tür, başka bir cihazda 165 doğru cevabı alırım. Bu cihazdaki sonucu önbelleğe aldığını ancak bu cihazda hiçbir şey bulamadığını düşünüyorum.AFNetworking ile bir GET isteğinin istenmeyen şekilde önbelleğe alınması

Uygulamayı silindi ve tekrar yüklenmiş ve bunu NSURLCache sorun ya ben arka uç veri almak için kullanmak

Kod değil, yine yanlış çalışıyor, ince başka cihazlar çalışır, kötü kokan o belirli cihaz üzerinde çalışıyorum. (Bu arada, tüm aygıtları ve tarayıcıları kontrol etmek için aynı kullanıcı adı ve şifreyi kullanıyorum), bu durumda durum böyle değil. Buna karşı tavsiye rağmen

AFHTTPRequestOperationManager* manager = [AFHTTPRequestOperationManager manager]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 

[manager.requestSerializer setValue:[[NSUserDefaults standardUserDefaults] valueForKey:TOKEN_ID_KEY] forHTTPHeaderField:TOKEN_HTTP_HEADER_NAME]; 
[manager GET:[NSString stringWithFormat:@"%@%@", BASE_URL, PROFILE_URL] parameters:nil success:^(AFHTTPRequestOperation* operation, id responseObject) { 
    NSLog(@"profile info request accepted with response : %@",responseObject); 
    profile = [[Profile alloc] initWithDictionary:responseObject]; 
    [self.tableView reloadData]; 
} failure:^(AFHTTPRequestOperation* operation, NSError* error) { 
    NSLog(@"profile info request failed with eroor : %@" , [error localizedDescription]) ; 
}]; 
+0

'un yardım isteğini gönderir ve cevabın üstesinden geldiğiniz yere gönderebilir? –

+0

Talebin önbelleğe alınmaması hakkında - 'AFNetworking' paylaşımlı' NSURLCache' kullanıyorsa, uygulamanızın önbelleğe alınmasını iptal etmek için bu cevabı takip edebilirsiniz: http://stackoverflow.com/a/17063060/2242359 –

+0

@AvielGross I kodu eklendi, Kodumda yanlış bir şey olduğunu düşünmüyorum, çünkü başka aygıtlarda ve tarayıcılarda çalışıyor, sadece bu aygıtta çalışmıyor –

cevap

3

Sorununuzu çözmek için hiçbir şey bulmazsanız, URL'lerin sonunda geçerli saati ekleyebilirsiniz. Bana da oldu ve ben her zaman yeni bir istek bu yüzden url'ye ekstra bir şey ekledim.

long currentTime = (long)CFAbsoluteTimeGetCurrent(); 
NSString *urlString = [NSString stringWithFormat:@"%@%@?%ld", 
               BASE_URL, 
               PROFILE_URL, 
               currentTime]; 

Bu, yalnızca bir çözümdür. Umarım bu,

1

en basit yaklaşım, sadece küresel NSURLCache devre dışı olacaktır.

NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 
                 diskCapacity:0 
                  diskPath:nil]; 
[NSURLCache setSharedURLCache:sharedCache]; 
+0

İlk önce önbelleği devre dışı bırakamıyorum, çünkü bu uygulamayı harita üzerinde kullanıyoruz, böylece devre dışı bırakılırsa fayans önbelleğe alınmayacak, ikincisi uygulamayı sildim ve tekrar yükledim ve istek yeniden çalışmıyor. bu bana yardımcı olmaz –

İlgili konular