NSHTTPURLResponseのみを含むコールバックブロック内から、AFJSONRequestOperationの生の応答データにアクセスする必要がある状況があります。 NSHTTPURLResponseからstatusCodeを取得できますが、生データにアクセスする方法がわかりません。この操作の失敗コールバックブロックからこれにアクセスするために誰かが知っている良い方法はありますか?
NSHTTPURLResponse
にはHTTPヘッダー情報のみが含まれます。ボディデータはありません。いいえ、これは不可能です。このコードを制御できる場合は、ブロックまたはメソッドに操作自体を渡して、responseData
またはresponseJSON
を取得します。
responseJSON
からのコールバックでは、_DataResponse<Any>
_またはString(data:response.data!, encoding: .utf8)
を使用して_response.result.value
_オブジェクトから本体を取得できます。
NSHTTPURLResponse
オブジェクトである_response.response
_からは取得できません。これにはヘッダー情報しかありません。
_Alamofire.request(URL(string: "https://foo.com")!).validate(statusCode: 200..<300).responseJSON() { response in
let body = response.result.value
}
_
Http応答が検証しない場合、上記は機能しません。しかし、これはします:
_Alamofire.request(URL(string: "https://foo.com")!).validate(statusCode: 200..<300).responseJSON() { response in
let body = String(data:response.data!, encoding: .utf8)
}
_