2016-08-22 11 views
6

मैं एक स्विफ्ट परियोजना पर काम कर रहा हूं जिसके लिए एपीआई की बहुत सारी खपत की आवश्यकता है। सबकुछ ठीक काम कर रहा है लेकिन कभी-कभी (20 में से 1), मुझे एपीआई कॉल करते समय Code=-1001 "The request timed out." त्रुटि मिलती है।कोड = -1001 "अनुरोध का समय समाप्त हो गया।"

मैं अलामोफायर का उपयोग कर रहा हूं। मैं एपीआई कॉल करने के लिए कोड संलग्न कर रहा हूँ।

let request = NSMutableURLRequest(URL: url) 
request.HTTPMethod = "POST"  
request.HTTPBody = myUrlContents.dataUsingEncoding(NSUTF8StringEncoding) 

request.timeoutInterval = 15 

request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
request.setValue("application/json", forHTTPHeaderField: "Accept") 
request.setValue("\(myUrlContents.dataUsingEncoding(NSUTF8StringEncoding)!.length)", forHTTPHeaderField: "Content-Length") 
request.setValue("en-US", forHTTPHeaderField: "Content-Language") 

Alamofire.request(request) 
     .validate() 
     .responseJSON { [weak self] response in 

     if response.result.isSuccess { 
      if let result = response.result.value { 
        print("Result: \(result)") 

        completion(result: result as! NSDictionary) 
      } 
     } 
     else { 
      print(response.debugDescription) 
     } 
} 

और लॉग

[Request]: <NSMutableURLRequest: 0x18855620> { URL: http://....... (url)} 
[Response]: nil 
[Data]: 0 bytes 
[Result]: FAILURE: Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=http://.....(url) NSErrorFailingURLKey=http://.....(url), NSLocalizedDescription=The request timed out., _kCFStreamErrorDomainKey=4, NSUnderlyingError=0x18a08900 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102}}} 
[Timeline]: Timeline: { "Request Start Time": 493582123.103, "Initial Response Time": 493582138.254, "Request Completed Time": 493582138.254, "Serialization Completed Time": 493582138.256, "Latency": 15.151 secs, "Request Duration": 15.151 secs, "Serialization Duration": 0.002 secs, "Total Duration": 15.153 secs } 

है मैं जानता हूँ कि मैं समय समाप्ति की अवधि त्रुटि से बचने के बढ़ा सकते हैं। लेकिन मैं वास्तविक कारण जानना चाहता हूं कि यह त्रुटि क्यों फेंक रहा है। मेरे एपीआई में से कोई भी डेटा वापस करने के लिए 2 सेकंड से अधिक समय लेता है। तो यह 15.151 सेकंड की विलंबता क्यों दिखा रहा है।

मैं बैकएंड पर लैंप स्टैक का उपयोग कर रहा हूं। किसी भी सहायता की सराहना की जाएगी।

+0

क्या आप अपने सर्वर पर प्राप्त होने वाले अनुरोध को देखते हैं? सर्वर इसे संसाधित करने में कितना समय लगा रहा है? –

+0

क्या आप हर बार सटीक यूआरएल मार रहे हैं? ऐसा लगता है कि आपके ऐप के साथ कोई समस्या नहीं है। अधिक संभावना है, आप वास्तव में एक परिदृश्य है जहां आपका एपीआई धीमा है। –

+0

क्या आपने इस अनुरोध को आरईएसटी क्लाइंट पर करने का प्रयास किया था? क्या यह समय समाप्ति है? – quant24

उत्तर

3

मुझे कोड = -1001 "अनुरोध का समय समाप्त हो गया" के साथ त्रुटि मिली। मैंने कुछ चीजों की कोशिश की। कुछ भी काम नहीं किया। अंततः मुझे पता चला कि समस्या मेरे पैरामीटर में थी कि मैं अनुरोध निकाय में सर्वर को भेज रहा हूं जो गलत प्रारूप के थे (मान ठीक था लेकिन टाइप गलत था)। Thats क्यों अनुरोध coz बाहर समय था सर्वर सर्वर इसे संसाधित करने में सक्षम नहीं था। यदि आप कुछ और काम नहीं करते हैं तो आप इसे देख सकते हैं।

+1

धन्यवाद आदमी! 'मोया' + 'अलामोफायर' का उपयोग करके एक सरल अनुरोध के साथ क्या गलत है, यह जानने का प्रयास करने में बस कुछ घंटों बिताए। मुद्दा 'nil' के बजाय खाली पैरामीटर शब्दकोश '[:]' था – medvedNick

संबंधित मुद्दे