我遇到一种情况,我需要从仅包含NSHTTPURLResponse的回调块中访问AFJSONRequestOperation的原始响应数据。我能够从NSHTTPURLResponse获取statusCode,但看不到任何获取原始数据的方法。有没有人知道从此操作的失败回调块访问它的好方法?
NSHTTPURLResponse
只包含HTTP标头信息;不包含正文数据。所以不,这是不可能的。如果可以控制此代码,请让块或方法传递操作本身并获取responseData
或responseJSON
。
在 responseJSON
的回调中,您可以使用 response.result.value
或 String(data:response.data!, encoding: .utf8)
从 DataResponse<Any>
对象获取主体。
你不能从response.response
获取它,这是一个NSHTTPURLResponse
的对象。这只有标题信息。
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)
}
老问题,但无论如何...
您不需要访问操作对象,您可以轻松执行以下操作:
NSData * data = [NSJSONSerialization dataWithJSONObject:JSON options:0 error:nil]];
使用回调接收的 JSON ID。