Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to set request timeout in alamofire?

I tried it using NSURLSession but now I want to use Alamofire.

like image 343
Abhinav Dobhal Avatar asked Jul 11 '17 18:07

Abhinav Dobhal


3 Answers

This approach worked for me on swift 3

 let manager : SessionManager = {
        let config = URLSessionConfiguration.default
            config.timeoutIntervalForRequest = 15
            config.timeoutIntervalForResource = 15
        let mgr = Alamofire.SessionManager(configuration: config)

        return mgr
    }()

Got it from https://github.com/Alamofire/Alamofire#session-manager

like image 132
Sergio Trejo Avatar answered Nov 19 '22 00:11

Sergio Trejo


If you want a custom timeout, either set the value on your requests, or create a custom URLSession with a custom configuration: alamofire documentation

let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 10 // seconds
configuration.timeoutIntervalForResource = 10
let sessionManager = Alamofire.SessionManager(configuration: configuration)

//OR

var request = URLRequest(url: URL(string: "myApi.com/Api/login")!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 20)
request.httpMethod = "GET"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

Alamofire.request("https://httpbin.org/get").responseJSON { response in
    print(response)
    if let json = response.result.value {
        print("JSON: \(json)")
    }
}
like image 4
Suhit Patil Avatar answered Nov 18 '22 23:11

Suhit Patil


Call this function in application(_:didFinishLaunchingWithOptions:) method in your AppDelegate.

func configureAlamofire() {
    Alamofire.SessionManager.default.session.configuration.timeoutIntervalForRequest = 15 // in seconds
    Alamofire.SessionManager.default.session.configuration.timeoutIntervalForResource = 15 // in seconds
}
like image 3
Aakash Avatar answered Nov 18 '22 22:11

Aakash