28

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

4

3 回答 3

49

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

于 2012-05-22T03:49:26.870 回答
2

在回调中,您可以使用或从对象responseJSON中获取主体。DataResponse<Any>response.result.valueString(data:response.data!, encoding: .utf8)

你不能从 中得到它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)
}
于 2019-06-28T05:11:29.333 回答
-4

老问题,但无论如何......

您不需要获取操作对象,您可以轻松地执行以下操作:

NSData * data = [NSJSONSerialization dataWithJSONObject:JSON options:0 error:nil]];

使用回调接收的 JSON id。

于 2013-05-09T11:11:45.947 回答