iOS-95-网络请求方式汇总(包含AFNetworking、NSMutableURLRequest)
来源:互联网 发布:康涅狄格学院知乎 编辑:程序博客网 时间:2024/06/14 19:55
文章包涵AFNetworking、NSMutableURLRequest两种请求方式:get、post、上传图片、解决上传base64编码图片过长问题(使用【2、post 第一种配置】即可解决)
比如报错:err:Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: too long (414)"
一、AFNetworking篇
1、get
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];//申明返回的结果是json类型manager.responseSerializer=[AFJSONResponseSerializer serializer];//申明请求的数据是json类型manager.requestSerializer=[AFJSONRequestSerializer serializer];manager.responseSerializer = [AFHTTPResponseSerializer serializer];// [self.HUD showLoading];//请求时带请求头[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];// 设置headerNSString *header = @"自定义header格式";[manager.requestSerializer setValue:header forHTTPHeaderField:kHeaderKey];__weak typeof(self) weakSelf = self;[manager GET:url parameters:nil progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"+++++%@",result); NSDictionary *dic = [weakSelf dictionaryWithJsonString:result]; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }];
2、post 第一种配置
NSString *url = @"http://···········";// 特别说明:像base64编码后的图片比较大,使用这种方式即可NSDictionary *paramDic = @{ @"base64Str":imageStr, @"number":@"12344", @"name":name, @"key":@"key", };AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];manager.responseSerializer = [AFHTTPResponseSerializer serializer];__weak typeof(self) weakself = self;manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/plain",@"image/png",nil];[self.HUD showLoading];[manager POST:url parameters:paramDic success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull responseObject) { NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"+++++%@",result); NSDictionary *object = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"++++++ %@",error);}];
3、post 第二种配置。 与【2】基本一致
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];//申明返回的结果是json类型manager.responseSerializer=[AFJSONResponseSerializer serializer];//申明请求的数据是json类型manager.requestSerializer=[AFJSONRequestSerializer serializer];//请求时带请求头__weak typeof(self) weakself = self;[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];[manager POST:URL parameters:nil progress:^(NSProgress * _Nonnull uploadProgress) {} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { }];
4、post 上传图片
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];//申明返回的结果是json类型manager.responseSerializer = [AFHTTPResponseSerializer serializer];manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/plain",@"image/png",nil];//提交数据及文件(图片、其他格式文件)[manager POST:kAddFeedbackURL parameters:param constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { // 在此处添加要发送的文件 (原理:block回调) [formData appendPartWithFileData:nil name:nil fileName:nil mimeType:@"application/octet-stream; charset=UTF-8"]; //image/jpeg [formData appendPartWithFileData:photoData2 name:@"img2" fileName:fileName2 mimeType:@"image/jpeg"];} progress:^(NSProgress * _Nonnull uploadProgress) { // 进度条 NSLog(@"service progress..."); } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { if (responseObject != nil) { NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"POST Error: %@", error.description); } ];
二、原生方法:NSMutableURLRequest、NSURLSessionDataTask
// 1.创建一个网络路径NSURL *url = [NSURL URLWithString:@"http://----"];// 2.创建一个网络请求,分别设置请求方法、请求参数NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:url];request.HTTPMethod = @"POST";NSString *args = [NSString stringWithFormat:@"memberId=%@&content=%@",PhoneNumber,content];request.HTTPBody = [args dataUsingEncoding:NSUTF8StringEncoding];// 设置headerNSString *header = @"自定义header格式";[request setValue:header forHTTPHeaderField:kHeaderKey];// 3.获得会话对象NSURLSession *session = [NSURLSession sharedSession];// 4.根据会话对象,创建一个Task任务__weak typeof(self) weakSelf = self;[self.HUD showLoading];NSURLSessionDataTask *sessionDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSLog(@"从服务器获取到数据"); /* 对从服务器获取到的数据data进行相应的处理. */ // NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableLeaves) error:nil]; NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"+++++%@",result); NSDictionary *dic = [weakSelf dictionaryWithJsonString:result]; [self performSelectorOnMainThread:@selector(handleResponeDetailInfo:) withObject:dic waitUntilDone:NO];}];//5.最后一步,执行任务,(resume也是继续执行)。[sessionDataTask resume];
阅读全文
0 0
- iOS-95-网络请求方式汇总(包含AFNetworking、NSMutableURLRequest)
- iOS原生网络请求使用(NSURL,NSURLRequest/NSMutableURLRequest,NSURLConnection)
- ios AFNetworking网络请求
- iOS开发——网络请求案例汇总(AFNetworking)
- iOS AFNetworking 取消网络请求
- iOS开发 - AFNetworking网络请求
- iOS开发 - AFNetworking网络请求
- iOS中网络请求--AFNetworking
- iOS之网络请求初解-AFNetworking(包含图片上传)
- ios NSURLRequest NSMutableURLRequest 数据请求
- ios NSURLRequest NSMutableURLRequest 数据请求
- ios NSURLRequest NSMutableURLRequest 数据请求
- iOS NSURLRequest NSMutableURLRequest 数据请求
- ios NSURLRequest NSMutableURLRequest 数据请求
- iOS 网络请求(AFNetworking)失败的错误码分析
- iOS 网络请求(AFNetworking)失败的错误码分析
- iOS网络请求---AFNetWorking教程2
- iOS开发: AFNetworking网络请求:NSURLSession版
- 【报错记录】virtualbox
- XCTest/XCTest.h' file not found
- win+E快速打开文件资源管理器问题
- 用户在线广告点击行为预测的深度学习模型
- jquery中attr和prop的区别
- iOS-95-网络请求方式汇总(包含AFNetworking、NSMutableURLRequest)
- git下拉项目出现的问题:E325: ATTENTION Found a swap file by the name “.git/.COMMIT_EDITMSG.swp”
- oracle 11.2.0.1 for windows server2012R2应用p12429529_112010_MSWIN-x86-64补丁
- 第十周项目2-用二叉树求解代数表达式
- malloc/free和new/delete的区别
- Spring之ContextLoaderListener
- PINGCAP开源高可用架构TIDB
- 设计模式(二十四)------23种设计模式(16):状态模式
- 判断pc跳转手机端页面