AFNetwork网络数据解析的方式

来源:互联网 发布:数组去重js算法实现 编辑:程序博客网 时间:2024/06/06 03:26

网络解析数据的时候,写起来有时候总感觉有点乱,有的需要修改请求头文件,有的需要POST传参数,在这里整理一下,用到的时候可以方便直接找到
第一种方式:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];    manager.securityPolicy.allowInvalidCertificates = YES;    manager.responseSerializer = [AFHTTPResponseSerializer serializer];    manager.requestSerializer = [AFHTTPRequestSerializer serializer];    //这里面serverConfiguration.headersForWebPage就是你要写请求头HOST部分的字典,通过forin循环,将它写入到manager中    for (NSString *key in serverConfiguration.headersForWebPage) {        [manager.requestSerializer setValue:[serverConfiguration.headersForWebPage objectForKey:key] forHTTPHeaderField:key];    }    //这里面写你需要POST发送的包    NSMutableDictionary *requestParameters = [[NSMutableDictionary alloc] initWithCapacity:0];    [requestParameters setObject:@"name" forKey:@"name"];    [requestParameters setObject:@"email@qq.com" forKey:@"email"];    [requestParameters setObject:@"m" forKey:@"gender"];    [requestParameters setObject:@"12345678" forKey:@"password"];    [requestParameters setObject:@"1989-11-18" forKey:@"birthday"];    //防止循环引用,weakSelf    __weak __typeof(self) weakSelf = self;    [manager POST:serverConfiguration.registerURL parameters:requestParameters success:^(AFHTTPRequestOperation *operation, id responseObject) {        __strong __typeof(weakSelf)strongSelf = weakSelf;        if (strongSelf)        {//解析返回正确的数据            id requestId = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];            if ([requestId isKindOfClass:[NSDictionary class]])            {                if ([[requestId objectForKey:@"message"] isEqualToString:@"success"])                {                    [ProgressHUD showSuccess:@"注册成功"];                    [strongSelf loginInHComic];                }            }        }    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {        [ProgressHUD showError:@"注册失败"];    }];

第二种方式:

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];    NSURLRequest *request = [NSURLRequest requestWithURL:url];    //此处写入请求头文件,self.serverConfig.headersForWebPage为已经写好的头文件字典    if ([[self.serverConfig.headersForWebPage allKeys] count] > 0) {        [request setAllHTTPHeaderFields:self.serverConfig.headersForWebPage];    }    [request setTimeoutInterval:TIMEOUTINTERVAL*2];    //这里面写你需要POST发送的包    NSMutableDictionary *parameters = [[NSMutableDictionary alloc] initWithCapacity:0];    [parameters setObject:@"name" forKey:@"name"];    [parameters setObject:@"email@qq.com" forKey:@"email"];    [parameters setObject:@"m" forKey:@"gender"];    [parameters setObject:@"12345678" forKey:@"password"];    [parameters setObject:@"1989-11-18" forKey:@"birthday"];    //设置请求POST参数    request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:@"http://www.baidu.com" parameters:parameters];    NSURLSession *session = [NSURLSession sharedSession];    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request                                                completionHandler:                                      ^(NSData *data, NSURLResponse *response, NSError *error) {                                          // 输出返回的状态码,请求成功的话为200                                          if (error)//返回错误                                          {                                          }else{//返回正常                                          }                                      }];    // 使用resume方法启动任务    [dataTask resume];

这两种方式都可以添加请求头参数,添加需要发送的POST包

0 0
原创粉丝点击