मेरी प्रोजेक्ट में मैं वेब से डेटा डाउनलोड करने के लिए AFNetworking का उपयोग कर रहा हूं। मैं उपयोगकर्ता कैश डेटा (यदि कैश मान्य है) की सेवा के लिए NSURLRequest
पर NSURLRequestUseProtocolCachePolicy
का लाभ उठा रहा हूं।AFNetworking और प्रतिक्रिया कैश हैंडलिंग
अनुरोध विधि: तरीकों
// create NSURL request
NSURLRequest *request = [ServerFactory URLGETRequestWithURL:url];
//creating AFHTTPRequestOperation
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
//set serializaer
operation.responseSerializer = [AFJSONResponseSerializer serializer];
//need to specify that text is acceptable content type, otherwise the error occurs
operation.responseSerializer.acceptableContentTypes = [MyRepository acceptableContentTypes];
//running fetch request async
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
//parse data
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//error handling
}];
//start async operation
[operation start];
स्वीकार्य सामग्री प्रकार विधि
+ (NSSet *)acceptableContentTypes
{
return [NSSet setWithObjects:@"application/json", @"text/plain", @"text/html" ,nil];
}
ServerFactory मिल
+ (NSURLRequest *)URLGETRequestWithURL:(NSString *)URL
{
NSMutableURLRequest *request = [[ServerFactory URLRequestWithURL:URL] mutableCopy];
[request setCachePolicy:NSURLRequestUseProtocolCachePolicy];
[request setHTTPMethod:@"GET"];
return request;
}
+ (NSURLRequest *)URLRequestWithURL:(NSString *)URL
{
// creating NSURL to give to NSURLRequest
NSURL *theURL = [NSURL URLWithString:URL];
//adding service version in http header
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:theURL];
[request addValue:HTTP_HEADER_VERSION_VALUE forHTTPHeaderField:HTTP_HEADER_VERSION_NAME];
//returing request
return request;
}
अब मैं नए तर्क में संक्रमण के लिए चाहते हैं यह मेरा कोड है:
- संचित डेटा प्राप्त
- तो संचित डेटा को मान्य
- साथ यदि संशोधित के बाद से शीर्ष लेख को पुनः प्राप्त संचित डेटा समय स्टाम्प
- सर्वर respondes 304 करने के लिए सेट संशोधित नहीं
- डिस्पैच नया अनुरोध कैश्ड डेटा के साथ उपयोगकर्ता की सेवा यदि कैश अगर वहाँ नए डेटा के साथ नए डेटा है
- अद्यतन यूआई अभी भी ठीक है, या 200 ठीक है
- तो कैश डेटा पूर्व pired
- वेब
से नए डेटा प्राप्त करें तो बुनियादी तौर पर मैं संचित डेटा की सेवा, लेकिन अगर मेरी संचित डेटा अभी भी सर्वर पर मान्य है या नहीं है, तो नए डेटा डाउनलोड करने के लिए जाँच करने के लिए चाहते हैं। क्या इसको हासिल करने के लिए कोई रास्ता है? मैंने AFHTTPRequestOperation
पर कोशिश की लेकिन मुझे कैश डेटा टाइमस्टैम्प नहीं मिला। क्या ऐसा करने के लिए एक "स्मार्ट" तरीका है?
मैं AFNetworking 2.0 – paxx
का उपयोग कर रहा हूं इस विषय को देखें, यह आपकी मदद कर सकता है: http://stackoverflow.com/a/21556002/514181 – Darrarski