我看到有一个我可以修改的接受的 http 状态代码列表,但我认为如果我能在失败块中获取 http 状态代码会更清晰..
好的,用操作对象找到了答案
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
我看到有一个我可以修改的接受的 http 状态代码列表,但我认为如果我能在失败块中获取 http 状态代码会更清晰..
好的,用操作对象找到了答案
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
好的,用操作对象找到了答案
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
在较新版本的 AFNetworking 中,您可以从错误中检索响应对象:
[[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode]
如果您正在进一步进行错误处理并且不想传递响应对象,这将很方便。
对于 AFNetworking 3.0,使用
failure:^(NSURLSessionTask *operation, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)operation.response;
httpResponse.statusCode;
NSLog(@"status code: %li", (long)httpResponse.statusCode);
}
NSInteger operationStatusCode = [operation.error code];
NSInteger httpStatusCode = operation.response.statusCode;
如果请求被取消/无法访问/超时,httpStatusCode
将始终为0
.
或者,您可以通过了解operationStatusCode
. 它是一个NSError
对象。
operationStatusCode
将是-1009
.operationStatusCode
则将是-999
.您可以在Apple 的文档中查看所有其他NSError
代码及其描述
((error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey])
as! HTTPURLResponse).statusCode
这对我有用 在您的请求中添加以下行
manager.requestSerializer = [AFJSONRequestSerializer 序列化器];