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