2013-11-02 12 views
6

मेरी प्रोजेक्ट में मैं वेब से डेटा डाउनलोड करने के लिए 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 पर कोशिश की लेकिन मुझे कैश डेटा टाइमस्टैम्प नहीं मिला। क्या ऐसा करने के लिए एक "स्मार्ट" तरीका है?

+0

मैं AFNetworking 2.0 – paxx

+0

का उपयोग कर रहा हूं इस विषय को देखें, यह आपकी मदद कर सकता है: http://stackoverflow.com/a/21556002/514181 – Darrarski

उत्तर

1

बाहर चेक AFNetworking : How to know if response is using cache or not ? 304 or 200

"मैं अनुरोध के साथ संशोधन की तारीख सहयोगी को सहेज कर एक रास्ता मिल गया है, और जब मुझे के जवाब AFNetWorking मैं इस तिथि की तुलना करें।

के रूप में साफ नहीं के रूप में मैं करना चाहते हैं, लेकिन काम करता है ... "