我有一种情况,我需要从仅包含 NSHTTPURLResponse 的回调块中访问 AFJSONRequestOperation 的原始响应数据。我能够从 NSHTTPURLResponse 中获取 statusCode,但看不到任何获取原始数据的方法。有没有人知道从该操作的失败回调块中访问它的好方法?
问问题
33386 次
3 回答
49
NSHTTPURLResponse
只包含 HTTP 头信息;没有身体数据。所以不,这是不可能的。如果您对此代码有任何控制权,请让块或方法传递操作本身并获取responseData
或responseJSON
。
于 2012-05-22T03:49:26.870 回答
2
在回调中,您可以使用或从对象responseJSON
中获取主体。DataResponse<Any>
response.result.value
String(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 回答