代码= -1001"请求超时."

rah*_*arg 8 ios swift alamofire

我正在开发一个需要大量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)
       }
}
Run Code Online (Sandbox Code Playgroud)

而日志是

[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 }
Run Code Online (Sandbox Code Playgroud)

我知道我可以增加超时时间以避免错误.但我想知道它抛出错误的实际原因.我的API都没有超过2秒的时间来返回数据.那么为什么它显示15.151秒的延迟.

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

Pri*_*nka 7

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

  • 谢啦!花了几个小时试图找出使用`Moya` +`Alamofire`的简单请求出了什么问题.问题是空参数字典`[:]`而不是`nil` (5认同)

小智 6

我刚刚遇到了同样的问题。我正在使用 GET 请求,结果证明使用 [:] 是错误的。您必须在 GET 请求中使用 nil 并在 POST 请求中使用 [:]