2016-08-22 3 views
6

저는 많은 API를 소비해야하는 Swift 프로젝트를 진행하고 있습니다. 모든 것이 정상적으로 작동하지만 때로는 (1 : 20) API를 호출하는 중에 Code=-1001 "The request timed out." 오류가 발생합니다.코드 = -1001 "요청 시간이 초과되었습니다."

저는 Alamofire를 사용하고 있습니다. 나는 API를 호출하는 코드를 첨부하고있다.

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 } 

이다가 나는 오류를 방지하기 위해 제한 시간을 늘릴 수 있습니다 알고 있습니다. 그러나 나는 왜 그것이 오류를 던지고 있는지 실제 이유를 알고 싶다. 내 API 중 어느 것도 데이터를 반환하는 데 2 ​​초 이상 걸리지 않습니다. 그렇다면 15.151 초의 지연 시간을 보이는 이유는 무엇입니까?

백엔드에 램프 스택을 사용하고 있습니다. 어떤 도움을 주시면 감사하겠습니다.

+0

서버에서 시간 초과 요청을 수신 했습니까? 서버가 처리하는 데 얼마나 오래 걸립니까? –

+0

매번 정확하게 동일한 URL을 누르십니까? 내게는 앱에 문제가있는 것 같지 않습니다. 아마 API가 느린 시나리오가 있습니다. –

+0

REST 클라이언트에서이 요청을하려고 했습니까? 시간 초과 되었습니까? – quant24

답변

3

코드 = -1001 "요청 시간이 초과되었습니다."라는 오류가 발생했습니다. 몇 가지 시도했습니다. 아무것도 효과가 없습니다. 마지막으로 문제가 내가 요청한 본문에서 잘못된 형식 (값이 좋았지 만 유형이 잘못됨) 인 서버로 보내고 있다는 것을 알았습니다. 이유는 요청이 서버가 처리 할 수 ​​없다는 것을 의미합니다. u에 대해 다른 것이 없다면 그걸 확인할 수 있습니다.

+1

고마워요! 'Moya' +'Alamofire'를 사용하여 간단한 요청으로 무엇이 잘못되었는지 알아 내려고 몇 시간을 보냈습니다. 문제는'nil' 대신 빈 매개 변수 사전'[:]'이었습니다. – medvedNick

관련 문제