2016-04-02 17 views
2

Bu Alamofire hata kaldırmaz: Sunucu ulaşılamazsa veya sertifika vbSwift Alamofire: geçerli bir istek ve geçerli bir yanıt kodu hem doğrulamak için nasıl

geçersizse

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

O iyi çalışıyor

Ancak sunucuya erişilebiliyor ancak bir 404/etc yanıt kodu döndürüyorsa bu hata işleme kodu tetiklenmiyor. Bu kullanım durumu için bu kodu nasıl destekleyebilirim?

cevap

0

..... Ben Alamofire validateAPI method kullanarak sona erdi:

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

Bu, dönüş kodundaki doğrulamanın yanı sıra genel bağlantı sorunlarını ele alır. Ayrıca içerik türü üzerinde doğrulama işler (daha fazla bilgi için bağlantılı belgeye bakın ...)

1

Yanıtın sonucu özellik, nil değilse, kodu içerir. Else, statusCode'u alabilirsiniz.

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

Bu, teşekkürler. Ancak, Alamofire API'sinin bunu otomatik olarak yapmak için iyi bir yöntemi olduğunu gördüm. –

0

alıyorum ve olmaya Geçerli bir istek, yanıt ve sonuç ikisine de sahip onun benim için çalışıyor, benim kod

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) 
        } 

      } 

umut

aşağıda verilmiştir onun yararlı

Bu dokümanlar okumak için yardımcı olur
+0

Bu kodu çalıştırdığımda 'isSuccess' 404 döndüğünde bile geçerlidir. Sunucu kapalıysa false değerini döndürür. Ancak her iki vakayı da ele almak istiyorum (her ikisi için de yanlıştır). –

İlgili konular