How to get the response data out of the NSHTTPURLResponse in the callback of AFJSONRequestOperation?

NSHTTPURLResponse only contains HTTP header information; no body data. So no, this would be impossible. If you have any control over this code, have the block or method pass the operation itself and get responseData or responseJSON.


In the callback from responseJSON you can get the body from a DataResponse<Any> object using response.result.value or String(data:response.data!, encoding: .utf8).

You can't get it from response.response, which is a NSHTTPURLResponse object. This only has header info.

Alamofire.request(URL(string: "https://foo.com")!).validate(statusCode: 200..<300).responseJSON() { response in
    let body = response.result.value
}

If the http response doesn't validate the above doesn't work. but this does:

Alamofire.request(URL(string: "https://foo.com")!).validate(statusCode: 200..<300).responseJSON() { response in
    let body = String(data:response.data!, encoding: .utf8)
}