首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AFNetworking 3.0状态码

AFNetworking 3.0状态码
EN

Stack Overflow用户
提问于 2016-01-22 11:10:08
回答 3查看 3.3K关注 0票数 2

我使用的是AFNetworking 3.0,我无法获得成功或失败的状态代码。

代码语言:javascript
复制
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:[NSString stringWithFormat:@"%@%@",BASE_URL,url] parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) {
                    // TODO: show progress somewhere
                } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                    NSLog(@"%@",responseObject);
                    // get status here
                } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

                    // get status here
                }];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-22 14:35:04

希望这能帮上忙!

代码语言:javascript
复制
typedef enum RequestTypes{

GET,
POST,
PUT,
DELETE

}RequestType;

@property (nonatomic, strong) AFHTTPSessionManager *manager;    

self.manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:urlString]]; // Base URL here, not entire URL
self.manager.requestSerializer = [AFJSONRequestSerializer serializer];


 //Add Headers to request if any.  // header is a dictionary of key value pair.
for (NSString *key in [headers allKeys]) {
    [self.manager.requestSerializer setValue:[headers valueForKey:key] forHTTPHeaderField:key];
}

/* Serialize request by type */ /* Type can be GET, POST etc */

NSString *requestTypeMethod = [self getStringForRequestType:type];

/* enter your URL here excluding base url  */ 

NSMutableURLRequest *request = [self.manager.requestSerializer requestWithMethod:requestTypeMethod URLString:[[NSURL URLWithString:urlString relativeToURL:_manager.baseURL] absoluteString] parameters:params error:nil];

NSURLSessionDataTask *dataTask = [self.manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {

 // here you will get actual response, NSURL response as well  and error if any.      

}];

[dataTask resume];


#pragma mark - GET Request type as string
-(NSString *)getStringForRequestType:(RequestType)type {

NSString *requestTypeString;

switch (type) {
    case GET:
        requestTypeString = @"GET";
        break;

    case POST:
        requestTypeString = @"POST";
        break;

    case PUT:
        requestTypeString = @"PUT";
        break;

    case DELETE:
        requestTypeString = @"DELETE";
        break;

    default:
        requestTypeString = @"GET";
        break;
 }

   return requestTypeString;
}
票数 1
EN

Stack Overflow用户

发布于 2017-04-16 17:58:49

这是工作代码:

代码语言:javascript
复制
[afHttpSessionManager GET:@"blablabla/bla" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    // success
} failure:^(NSURLSessionTask *operation, NSError *error) {
    // failure
    NSHTTPURLResponse *response = (NSHTTPURLResponse *) [operation response];
    NSInteger statusCode = [response statusCode];
    NSLog(@"RESPONSE CODE: %i", statusCode);
}];
票数 3
EN

Stack Overflow用户

发布于 2016-01-22 13:26:06

您必须使用AFURLSessionManager的方法来获得这样的NSURLResponse对象。由于AFHTTPSessionManager是AFURLSessionManager的子类,它为网络调用提供了方便的方法。

代码语言:javascript
复制
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];

通过使用AFURLSessionManager调用任何方法(如dataTaskWithRequestdownloadTaskWithRequest,),您将获得NSURLResponse对象,并从中获得成功或失败的状态代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34945289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档