2016-04-02 3 views
2

Wir haben diese Alamofire Fehlerbehandlung:Swift Alamofire: Wie sowohl eine gültige Anforderung und eine gültige Antwort-Code bestätigen

Alamofire.request(.GET, getUrl("mystuff")).responseData { response in 
    guard response.result.error == nil else { 
     //Handle error 
    } 
} 

Es funktioniert gut, wenn der Server nicht erreichbar ist oder das Zertifikat ungültig ist, usw.

Wenn jedoch der Server erreicht werden kann, aber einen 404/etc-Antwortcode zurückgibt, wird dieser Fehlerbehandlungscode nicht ausgelöst. Wie können Sie die Unterstützung für diesen Anwendungsfall in diesen Code integrieren?

Antwort

0

Es hilft die Dokumentation zu lesen ..... ich landete mit dem Alamofire validateAPI method:

Alamofire.request(.GET, getUrl("mystuff")).validate().responseData { response in 
    guard response.result.error == nil else { 
     //Handle error 
    } 
} 

Dies behandelt die Überprüfung des Rückkehrcodes sowie allgemeine Verbindungsprobleme. Behandelt auch die Validierung des Inhaltstyps (siehe das verknüpfte Dokument für weitere Informationen ...)

1

Die Ergebniseigenschaft der Antwort enthält den Code, wenn es nicht null ist. Sonst können Sie den statusCode erhalten.

if let error = response.result.error 
{ 
    let statusCode = error.code 
} 
else 
{ 
    let statusCode = (response.response?.statusCode)! 
} 
+1

Dies funktioniert dank. Aber ich habe festgestellt, dass die Alamofire-API eine schöne Methode hat, dies automatisch zu tun, also ging ich damit. –

0

Ich habe gültig sowohl Anfrage, Antwort und Ergebnis zu erhalten und seine für mich arbeiten zu sein, ist mein Code unten

Alamofire.request(.GET, "url", parameters: nil) 
       .responseJSON { (request, response, result) -> Void in 

        print(result.value) 

        if(result.isSuccess) { 
         completionBlock(error : nil, responseDict : result.value as! [String : AnyObject]) 
        } 
        else { 
         print("error") 
    //     completionBlock(error: errno_t, responseDict: nil) 
        } 

      } 

hoffen, seine hilfreich

gegeben
+0

Wenn ich diesen Code ausführen, ist 'isSuccess' auch dann wahr, wenn ein 404 zurückgegeben wird. Es gibt false zurück, wenn der Server ausgefallen ist. Aber ich möchte beide Fälle behandeln (Rückgabe false für beide). –

Verwandte Themen