2015-01-13 15 views
8

Tôi đang sử dụng Alamofire cho yêu cầu Rest (POST) của tôi và nhận phản hồi JSON liền mạch. Nhưng tôi chỉ có thể truy cập cơ thể phản hồi. Tôi muốn nhận các tiêu đề phản hồi. Không phải là nó có thể khi sử dụng Alamofire?Cách nhận tiêu đề phản hồi khi sử dụng Alamofire trong Swift?

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

@IBAction func loginButtonPressed(sender: UIButton) { 
    let baseUrl = Globals.ApiConstants.baseUrl 
    let endPoint = Globals.ApiConstants.EndPoints.authorize 

    let parameters = [ 
     "apikey": "api_key_is_here", 
     "apipass": "api_pass_is_here", 
     "agent": "agent_is_here" 
    ] 

    Alamofire.request(.POST, baseUrl + endPoint, parameters: parameters).responseJSON { 
     (request, response, data, error) in let json = JSON(data!) 

     if let result = json["result"].bool { 
      self.lblResult.text = "result: \(result)" 
     } 
    } 
} 
+2

Tôi không có kinh nghiệm với Alamofire, nhưng không phải là 'phản hồi' trong quá trình đóng hoàn thành' NS HTTPURLResponse' có thuộc tính 'allHeaderFields'? –

Trả lời

24

Như phản ứng là NSHTTPURLResponse loại, bạn sẽ có thể để có được những tiêu đề như sau:

response.allHeaderFields 
+1

Nếu câu trả lời là loại NSHTTPURLResponse thì bạn không phải bỏ thêm nữa ... –

+1

Vâng, bạn nói đúng. Khi tôi đang sử dụng Moya, tôi cần dàn diễn viên khi nó trả lời phản hồi như NSURLResponse. Đã chỉnh sửa câu trả lời của tôi! – Antoine

+0

Tuyệt vời Tôi đã tìm cách để làm điều đó bằng cách sử dụng Moya, chỉ cần đào sâu vào chỉnh sửa của bạn :) Cảm ơn! – VivienG

3

Dưới đây là làm thế nào để truy cập vào các tiêu đề phản ứng trong Swift 3:

Alamofire.request(.GET, requestUrl, parameters:parameters, headers: headers) 
    .responseJSON { response in 
    if let headers = response.response?.allHeaderFields as? [String: String]{ 
     let header = headers["token"] 
     // ... 
    } 
} 
Các vấn đề liên quan