J'ai une situation où j'ai besoin d'accéder aux données de réponse brutes pour un AFJSONRequestOperation, à partir du bloc de rappel qui comprend uniquement NSHTTPURLResponse. Je suis en mesure d'obtenir le statusCode de NSHTTPURLResponse, mais je ne vois aucun moyen d'accéder aux données brutes. Existe-t-il un bon moyen que quelqu'un connaisse pour y accéder à partir du bloc de rappel d'échec de cette opération?
NSHTTPURLResponse
contient uniquement des informations d'en-tête HTTP; pas de données corporelles. Alors non, ce serait impossible. Si vous avez un contrôle sur ce code, demandez au bloc ou à la méthode de passer l'opération elle-même et obtenez responseData
ou responseJSON
.
Dans le rappel de responseJSON
, vous pouvez obtenir le corps d'un objet DataResponse<Any>
En utilisant response.result.value
Ou String(data:response.data!, encoding: .utf8)
.
Vous ne pouvez pas l'obtenir à partir de response.response
, Qui est un objet NSHTTPURLResponse
. Cela n'a que des informations d'en-tête.
Alamofire.request(URL(string: "https://foo.com")!).validate(statusCode: 200..<300).responseJSON() { response in
let body = response.result.value
}
Si la réponse http ne valide pas, ce qui précède ne fonctionne pas. mais cela fait:
Alamofire.request(URL(string: "https://foo.com")!).validate(statusCode: 200..<300).responseJSON() { response in
let body = String(data:response.data!, encoding: .utf8)
}