网络解析数据的时候,写起来有时候总感觉有点乱,有的需要修改请求头文件,有的需要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包