【问题标题】:Alamofire: finished with error - code: -1001Alamofire:完成错误 - 代码:-1001
【发布时间】:2019-01-07 12:15:21
【问题描述】:

这样的代码:

import Foundation
import Alamofire
struct Request {
var alamoFireManager : SessionManager?
init() {
    let configuration = URLSessionConfiguration.default
            configuration.timeoutIntervalForRequest = 20
    configuration.requestCachePolicy = .useProtocolCachePolicy
            alamoFireManager = Alamofire.SessionManager(configuration: configuration)
}

func sendRequest() {

    alamoFireManager?.request(url,method: method, parameters: body, encoding: JSONEncoding.default,headers: headers).responseJSON { response in

    }
}
}

【问题讨论】:

  • 我认为它的请求超时错误。
  • NSURLErrorDomain code = -1001 明确指出请求超时。您已将 timeoutIntervalForRequest 指定为会话 20 因此错误,在您发布在下面的答案中,您没有设置任何超时间隔,因此它可以工作。所以提到 SessionManager 不起作用是不正确的。通过增加/删除 SessionManager 上的时间间隔来发布正确答案。

标签: ios swift xcode request alamofire


【解决方案1】:

SessionManager 不适用于我。最好在 Alamofire 中使用这样的代码:

let request = URLRequest(url: url)
request.httpMethod = "GET"
//Some configuration


Alamofire.request(request).responseJSON {
                response in

}

【讨论】:

    【解决方案2】:

    我已经完成了,它正在工作(swift 4 代码)。

    import UIKit
    import Alamofire
    
    class SplashViewController: UIViewController {
    
        var alamoFireManager = Alamofire.SessionManager.default
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            self.callPostApi()
    
        }
    
        func callPostApi() {
    
            let configuration = URLSessionConfiguration.default
            configuration.timeoutIntervalForRequest = 20 // seconds
            configuration.timeoutIntervalForResource = 20
            configuration.requestCachePolicy = .useProtocolCachePolicy
            alamoFireManager = Alamofire.SessionManager(configuration: configuration)
    
            alamoFireManager.request(url, method: .post, parameters: ["jsondata":base64EncodedString])
                .responseJSON { response in
    
                    switch (response.result) {
                    case .success:
    
                        print(response.data as? Data)
    
                        if let json = response.result.value {
                            print("JSON: \(json)") // Here is your JSON Response
                        }
                        //do json stuff
    
                    case .failure(let error):
    
                        if error._code == NSURLErrorTimedOut || error._code == -1005{
                            //HANDLE TIMEOUT HERE
                            print("TimeOut")
                        }
                        print("\n\nAuth request failed with error:\n \(error)")
                        break
                   }
            }
    
        }
    
    }
    

    【讨论】:

    • @J.DoeIt 返回您的服务调用的请求超时。
    【解决方案3】:

    对我来说是超时错误。一种选择是增加超时值(不好的选择),更好的是提高 API/应用程序的性能。

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      相关资源
      最近更新 更多