如何在 AFJSONRequestOperation 的回调中从 NSHTTPURLResponse 中获取响应数据



我遇到一种情况,我需要从仅包含NSHTTPURLResponse的回调块中访问AFJSONRequestOperation的原始响应数据。我能够从NSHTTPURLResponse获取statusCode,但看不到任何获取原始数据的方法。有没有人知道从此操作的失败回调块访问它的好方法?

NSHTTPURLResponse只包含HTTP标头信息;不包含正文数据。所以不,这是不可能的。如果可以控制此代码,请让块或方法传递操作本身并获取responseDataresponseJSON

responseJSON 的回调中,您可以使用 response.result.valueString(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。

相关内容

  • 没有找到相关文章

最新更新