2015-07-14 13 views
6

के साथ एक GET अनुरोध को अनचाहे कैशिंग करना मेरे पास एक स्थिति है, मैं अपने बैकएंड से एक विशिष्ट संसाधन (अनुरोध प्राप्त करें) पुनर्प्राप्त करने के लिए AFNetworking के साथ बाकी API का उपयोग करता हूं। जब मैं ब्राउज़र के साथ बैकएंड की जांच करता हूं तो परिणाम 165 होता है लेकिन एक विशिष्ट डिवाइस (एक विशिष्ट आईफोन 6 प्लस) में परिणाम 5 होता है, किसी भी अन्य डिवाइस में मैं 165 सही उत्तर प्राप्त करता हूं। मुझे लगता है कि इस डिवाइस पर कुछ कैश किया गया है लेकिन इस विशिष्ट डिवाइस पर कुछ भी नहीं मिला है।AFNetworking

मैं आवेदन नष्ट कर दिया और इसे फिर से स्थापित किया है और यह गलत फिर से काम करता है, इसलिए NSURLCache समस्या या तो

कोड है कि मैं बैकएंड से डेटा पुनः प्राप्त करने के लिए उपयोग नहीं है, यह ठीक से अन्य उपकरण भी काम करता है, ऐसा नहीं ' उस विशिष्ट डिवाइस पर काम नहीं करते हैं। (जिस तरह से मैं सभी उपकरणों और ब्राउज़रों को जांचने के लिए एक ही उपयोगकर्ता नाम और पासवर्ड का उपयोग करता हूं) इसलिए यह मामला नहीं है।

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

मदद करता है क्या आप कोड का टुकड़ा पोस्ट कर सकते हैं जहां आप अनुरोध भेजते हैं और प्रतिक्रिया को संभालते हैं? –

+0

अनुरोध को कैश करने के बारे में नहीं - 'AFNetworking' साझा' NSURLCache' का उपयोग कर रहा है, आप अपने ऐप के लिए कैशिंग रद्द करने के लिए इस उत्तर का पालन कर सकते हैं: http://stackoverflow.com/a/17063060/2242359 –

+0

@AvielGross मैंने कोड जोड़ा, मुझे नहीं लगता कि यह मेरे कोड में कुछ गलत है, क्योंकि यह किसी अन्य डिवाइस और ब्राउज़र पर काम कर रहा है, यह केवल इस विशिष्ट डिवाइस पर काम नहीं करता है –

उत्तर

3

यदि आपको अपनी समस्या का समाधान करने के लिए कुछ भी पता नहीं है तो आप यूआरएल के अंत में वर्तमान समय जोड़ सकते हैं। यह मेरे साथ भी हुआ और मैंने अभी अपने यूआरएल में कुछ अतिरिक्त जोड़ा है ताकि यह हमेशा एक नया अनुरोध हो।

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

यह सिर्फ एक कामकाज है। उम्मीद है कि यह

1

सबसे सरल दृष्टिकोण सिर्फ वैश्विक NSURLCache निष्क्रिय करने के लिए हो सकता है, हालांकि मैं इसके खिलाफ सलाह देते हैं।

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

पहले मैं कैश को अक्षम नहीं कर सकता, क्योंकि हम इस ऐप पर मानचित्र का उपयोग करते हैं, इसलिए यदि मैं इसे अक्षम करता हूं तो टाइल्स कैश नहीं किए जाएंगे, दूसरा मैंने ऐप हटा दिया और इसे फिर से इंस्टॉल किया और अनुरोध फिर से काम नहीं कर रहा है। तो यह मेरी मदद नहीं करेगा –