मैं अपने आईओएस ऐप से एक webservice कॉल कर रहा हूं जिसमें वापस आने में चार मिनट लग सकते हैं। मैं ऑब्जेक्ट्स के कॉल और लोडिंग के लिए रेस्टकिट का उपयोग कर रहा हूं। मुझे जो मिल रहा है वह यह है कि जब अनुरोध लंबे समय ले रहे हैं, तो मुझे 60 सेकंड के बाद टाइमआउट त्रुटि मिलती है। मैंने टाइमआउट अंतराल को बेतुका मात्रा में सेट करने का प्रयास किया है लेकिन यह अभी भी ~ 60 के बाद समाप्त हो गया है। - वहाँ है कि डिजाइन में कुछ है कि हो सकता हैRestKit टाइमआउट को अनदेखा किया जा रहा है
- (void)loadData
{
NSString *uid = [self retrieveFromUserDefaults:@"login_preference"];
NSString *pwd = [self retrieveFromUserDefaults:@"password_preference"];
if([uid isEqualToString:@""] || [pwd isEqualToString:@""]){
[self stopSpinner];
[self enableUserInterface:YES];
UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Missing Settings"
message:@"Please enter your login information in the settings."
delegate:nil
cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
return;
}
RKObjectManager* objectManager = [RKObjectManager sharedManager];
NSDictionary *params = [NSDictionary dictionaryWithObjects:
[NSArray arrayWithObjects:uid, pwd, nil]
forKeys:[NSArray arrayWithObjects:@"uid", @"pwd", nil]];
// Load the object model via RestKit
[objectManager loadObjectsAtResourcePath:[@"/synchData" appendQueryParams:params] delegate:self];
}
मैं एक पृष्ठभूमि सूत्र में वेब सेवा के लिए कॉल कर रहा हूँ:
RKObjectManager* objectManager = [RKObjectManager objectManagerWithBaseURL:HOSTNAME];
objectManager.client.requestQueue.showsNetworkActivityIndicatorWhenBusy = YES;
objectManager.client.disableCertificateValidation = YES;
//timeout
objectManager.client.timeoutInterval = 1000;
यहाँ सेवा करने के लिए कॉल है समस्या पैदा कर रहा है? मैं कल्पना नहीं कर सकता, आईओएस की तरह पृष्ठभूमि थ्रेड 60 सेकंड से अधिक समय तक चलने की अनुमति नहीं दे रहा है? मैं सिर्फ यह नहीं समझ सकता कि समस्या क्या है।
क्या समय से सर्वर से प्रतिक्रिया प्राप्त करने के लिए समय लगता है, या सर्वर से WHOLE प्रतिक्रिया प्राप्त करने के लिए समय लगता है? मैं एक संभावित रूप से बहुत बड़ी जेसन प्रतिक्रिया वापस कर रहा हूं - क्या मुझे समयावधि सीमा के भीतर पूरी चीज वापस करने की ज़रूरत है, या क्या मुझे बस सीमा से सर्वर से कोई प्रतिक्रिया प्राप्त करने की आवश्यकता है?
हमें दिखाएं कि आप अपने अनुरोध कैसे प्रेषित करते हैं। टाइमआउट वह समय है जब तक आपका आवेदन तब तक इंतजार नहीं करता जब तक कि उसे कोई प्रतिक्रिया न हो, आपको इस समय के भीतर पूरी चीज़ वापस करने की आवश्यकता नहीं है। – lawicko
धन्यवाद - मैंने थोड़ा जोड़ा, क्या आपका मतलब था? मैंने दो बार चेक किया और कोई फर्क नहीं पड़ता कि मेरा टाइमआउट अंतराल क्या है, यह 60 सेकंड के बाद मर रहा है। – Michaela
हां, यही मेरा मतलब था। मुझे आपके कोड में कुछ भी गलत नहीं दिख रहा है, आप टाइमआउट कैसे पकड़ते हैं? RestKit दस्तावेज़ों का कहना है कि डिफ़ॉल्ट टाइमआउट 120 सेकंड पर सेट किया गया है और वह टाइमआउट फ़ंक्शन ' वापस करेगा RKRequestConnectionTimeoutError didFailLoadWithError के माध्यम से:', इसलिए यदि आप इसे 'requestDidTimeout:' में पकड़ते हैं, तो ऐसा कोई मौका है कि कुछ अन्य तंत्र इसे आमंत्रित करते हैं। आप एक विधि में एक डीबगर डालना चाहते हैं जो टाइमआउट को पकड़ता है और कॉलआउट स्टैक की जांच करता है ताकि यह पता चल सके कि वास्तव में टाइमआउट का कारण क्या है, शायद यह आपको यह पहचानने में मदद करेगा कि 60 का मूल्य कहां से आता है। – lawicko