代码= -1001“请求超时。”

我正在开发一个需要大量使用API​​的Swift项目。 一切正常,但有时(20分之一),我得到Code=-1001 "The request timed out." 调用API时出错。

我正在使用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]:  { 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堆栈。 任何帮助,将不胜感激。

我收到错误代码= -1001“请求超时。”。 我做了几件事。 没有任何效果。 最后我发现问题出在我的参数中,我在请求体中发送到服务器的格式错误(值很好,但类型错误)。 这就是为什么请求超时,因为服务器无法处理它。 你可以检查一下,如果没有别的东西适合你。