2016-08-22 19 views
6

Çok miktarda API gerektiren bir Swift projesinde çalışıyorum. Her şey iyi çalışıyor ama bazen (20'de 1), API'yi çağırırken Code=-1001 "The request timed out." hata alıyorum.Kod = -1001 "İstek zaman aşımına uğradı."

Alamofire kullanıyorum. API'yi çağırmak için kodu ekliyorum.

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) 
     } 
} 

Ve günlük

[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 } 

olduğunu ben hatayı önlemek için zaman aşımı süresini artırabilir biliyorum. Ama hatayı attığının gerçek sebebini bilmek istiyorum. API'mın hiçbiri verileri döndürmek için 2 saniyeden uzun sürmez. Öyleyse neden 15.151 saniye gecikme gösteriyor.

Arka uçta LAMP yığını kullanıyorum. Herhangi bir yardım takdir edilecektir.

+0

İstemcinin sunucunuzda alınma isteğini görüyor musunuz? Sunucu bunu işlemek ne kadar sürer? –

+0

Her defasında aynı URL'ye mi basıyorsunuz? Uygulamanızla ilgili bir sorun olduğunu görünmüyor. Muhtemelen API'nizin yavaş olduğu bir senaryonuz var. –

+0

Bu isteği bir REST istemcisinde yapmaya çalıştınız mı? Zaman aşımı var mı? – quant24

cevap

3

Kod = -1001 “İstek zaman aşımına uğradı.” Ile ilgili hatayı aldım. Birkaç şey denedim. Hiçbir şey işe yaramadı. Sonunda, sorunun, hatalı biçimdeki sunucuya istek gövdesinde gönderdiğim parametrelerden kaynaklandığını öğrendim (değer iyiydi ama tür yanlıştı). Bu nedenle istek coz zaman aşımına uğradı, sunucu bunu işleyemedi. Başka bir şey işe yaramıyorsa, bunu kontrol edebilirsiniz.

+1

Teşekkürler adamım! Sadece Moya' + 'Alamofire' kullanarak basit bir istekte neyin yanlış olduğunu anlamaya çalışan birkaç saat geçirdim. Sorun nil' yerine boş parametreler sözlük '[:]' idi. – medvedNick

İlgili konular