2016-10-05 2 views
1

Ich benutze die Alamofire für Daten von REST API zu bekommen.Swift Alamofire überprüfen Wartezeit Timeout und setzen Fehler

   Alamofire.request(.GET, url) 
       .authenticate(user: user, password: password) 
       .responseString { response in 
        if (response.result.error != nil) 
        { 
         show_error() 
        } 
       } 
       .response { (request, response, data, error) in ... 

Ich bekomme und setze Fehler, wenn Benutzer keine Internetverbindung haben. Und ich möchte Fehler setzen, wenn Benutzer mehr als 3 Sekunden Antwort nach Anfrage warten.

Wie Katze ich es mache? Wie nutze das Timeout im Alamofire?

Antwort

2
Alamofire.SessionManager.default.session.configuration.timeoutIntervalForRequest = 3000 

Dies gilt für alle Anfragen. Wenn Sie nur das Timeout für eine bestimmte Anforderung setzen:

let sessionManager = Alamofire.SessionManager.default 
sessionManager.configuration.timeoutIntervalForRequest = 3000 
sessionManager.request(.GET, url) 
      .authenticate(user: user, password: password) 
      .responseString { response in 
       if (response.result.error != nil) 
       { 
        show_error() 
       } 
      } 
      .response { (request, response, data, error) in ... 

Sie können mehr über Session-Manager in der README Datei finden ...

+1

Es ist für Alamofire 4.0, aber ich benutze 3.0 Für Alamofire 3.0: Alamofire.Manager.sharedInstance.session.configuration.timeoutIntervalForRequest = 300 Können Sie mir bitte sagen, wo ich Code eingeben muss? Ich möchte, wenn Timeout mehr als 3 Sekunden, um diese Funktion auszuführen: show_error() – Dim

+0

Nun wird die Zeitüberschreitung sicherlich durch einen Fehler. Sie behandeln es also genauso wie jeden anderen Fehler. – ezcoding

+0

Wo muss ich diesen Code hinzufügen? Ich habe in der ViewDidLoad hinzugefügt und es funktioniert nicht für mich. – Dim