2016-02-17 18 views
6

Tôi đã sử dụng Alamofire trong một trong các dự án iOS của mình, nhưng gần đây khi nâng cấp lên Alamofire 3.0, định dạng đã thay đổi đôi chút để trả về kết quả. Trong trường hợp của tôi, tôi muốn gọi một API đăng nhập và nó sẽ trả về kết quả. Có một vài lỗi có thể xảy ra, vì vậy tôi luôn quay trở lại trong kết quả API vấn đề là gì, vì vậy tôi muốn mã của tôi đi vào khối thất bại nếu phản hồi là 400 và sau đó bao gồm thông báo từ API của tôi như một phần của lỗi, nhưng tôi không thể có vẻ để có được dữ liệu phản hồi từ yêu cầu khi kết quả là một thất bại.Nhận dữ liệu phản hồi từ lỗi Alamofire

Dưới đây là mã của tôi:

Alamofire.request(
     method, 
     Constants.baseURL + route, 
     parameters: fullParameters) 
     .validate() 
     .responseJSON { response in 
      let json = JSON(response.result.value!) 
      switch response.result { 
      case .Success: 
       completion?(json["data"]) 
      case .Failure(let errorData): 
       failure?(errorData, json["errmsg"]) 
      } 
    } 

gì đang xảy ra ở đây, là khi các phản ứng là một thất bại, nó phá vỡ vì response.result.value là con số không, nhưng tôi muốn nó trở thành JSON được trả lại từ API bất kể cái gì. Khi phản ứng là một thành công, mặt khác nó hoạt động hoàn hảo.

Trả lời

2

Vì bạn đang gọi validate() Alamofire tự động xác thực mã trạng thái từ 200...299.

Nếu bạn không muốn Alamofire để xác nhận mã trạng thái của bạn, nhưng bạn muốn tự mình làm bằng tay bạn có hai lựa chọn:

  • Di .validate() và xử lý tất cả mọi thứ bằng tay.
  • Thay đổi validate() thành .validate(statusCode: yourRange) cho phạm vi bạn muốn cho phép và xử lý chúng theo cách thủ công.

Thông tin thêm here.

+0

Điều đó đã giải quyết được điều đó, cảm ơn rất nhiều! :) – Henry

Các vấn đề liên quan