Code = -1001“请求超时。”

问题描述:

我正在开发一个需要大量API使用的Swift项目。一切工作正常,但有时(1 20),我调用API时出现Code=-1001 "The request timed out."错误。Code = -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秒的延迟。

我在后端使用LAMP堆栈。任何帮助,将不胜感激。

+0

您是否看到服务器收到超时请求?服务器需要多长时间来处理它? –

+0

你每次都点击完全相同的URL吗?对我来说,这似乎不太可能是您的应用程序出现问题。更有可能的是,你真的有你的API缓慢的情况。 –

+0

您是否尝试在REST客户端上发出此请求?它超时吗? – quant24

我得到了错误代码= -1001“请求超时。”。 我试了几件事。没有工作。最后,我发现问题出在我的参数中,我在请求主体中向服务器发送的格式不正确(值正确,但类型错误)。这就是为什么该请求超时因为服务器无法处理它。如果没有其他的东西适合你,你可以检查一下。

+1

谢谢你!刚花了几个小时试图找出使用'Moya' +'Alamofire'的简单请求有什么问题。问题是空参数字典'[:]'而不是'nil' – medvedNick