我看到有一个我可以修改的接受的 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 序列化器];