iOS网络请求总结
来源:互联网 发布:淘宝积分兑换优酷会员 编辑:程序博客网 时间:2024/06/05 17:35
*说明:文章中HTTP为宏定义的http地址,事例通过app_login.action的接口,通过传递policyNum、plateNum、phoneNum三个参数进行登录操作
一、方法1: Foundation框架 NSURLConnection
(1)同步请求:同步方法加载url请求,会阻塞当前线程,一般不使用。代码如下
#pragma mark - 同步网络请求-(void)SynchronousRequest{ NSString *url = [[NSString alloc] initWithFormat:@"%@app_login.action?policyNum=111111&plateNum=222222&phoneNum=333333",HTTP];//请求的url地址 NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];//根据url地址创建一个请求 NSURLResponse *response = nil;//请求答复 NSError *error = nil;//请求错误信息 NSData *content = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];//使用NSURLConnection发起一个请求,用content保存请求结果 NSString *string = [[NSString alloc]initWithData:content encoding:NSUTF8StringEncoding];//将请求结果转成String NSLog(@"response:%@",string);//打印请求结果}
(2)异步请求:异步方法加载url请求,不会造成当前线程阻塞,通过实现代理
NSURLConnectionDelegate的方法,实现结果数据处理,另外也可以通过block的方式处理结果数据, 代理方式代码如下:
#pragma mark - 异步网络请求-(void)AsynchronousRequest{ NSString *url = [[NSString alloc] initWithFormat:@"%@app_login.action?policyNum=111111&plateNum=222222&phoneNum=333333",HTTP]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]]; aSynConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];}- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ [responseData appendData:data];}- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ NSLog(@"didFailWithError");}- (void)connectionDidFinishLoading:(NSURLConnection *)connection{ if( [connection isEqual: aSynConnection]) { NSString *asyReturn = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSLog(@"%@",asyReturn); responseData = nil; }}
二.方法2:通过第三方框架:AFNetworking
(1)从GitHub下载AFNetworking:https://github.com/AFNetworking/AFNetworking
(2)将AFNetworking 文件夹拖到工程中
(3)在需要的地方#import"AFNetworking.h"
AFNetworking已经给我们封装好了异步网络请求,主要代码如下:
#pragma mark - AFNetworking 请求-(void)afNetworkingPost{ NSURL *url = [NSURL URLWithString:HTTP]; NSDictionary *parameters = @{@"policyNum":@"PDAT20155001T000037476", @"plateNum":@"渝A85***",@"phoneNum":@"1888335****"};//参数列表 AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:url]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; [manager POST:@"app_login.action" parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"success: %@",responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"error: %@, \n error.localizedDescription: %@", error, [error localizedDescription]); }];}
三.加载网络图片:通过第三方框架SDWebImage
(1)从GitHub下载SDWebImage:https://github.com/rs/SDWebImage
(2)将SDWebImage 文件夹拖到工程中
(3)在需要的地方#import "SDWebImage/UIImageView+WebCache.h"
例如从网络加载TableViewCell中的图片,只要在TableView的Delegate中使用SDWebImage的sd_setImageWithURL:(NSURL *)url方法,主要代码如下:
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];[cell.image sd_setImageWithURL:imageUrl placeholderImage:[UIImage imageNamed:@"pic"]];}
0 0
- iOS网络请求总结
- IOS开发-网络请求方式总结
- IOS开发-网络请求方式总结
- iOS http网络请求相关知识总结
- IOS 基础的post 和 get网络请求总结
- ios网络请求
- iOS网络请求
- ios网络异步请求
- iOS网络请求
- IOS 异步 网络请求
- IOS 同步 网络请求
- iOS中的网络请求
- ios学习--网络请求
- iOS中的网络请求
- iOS 网络请求
- IOS-网络请求
- iOS网络数据请求
- ios 网络请求框架
- 从头到尾彻底理解KMP
- Android进程间通信 AIDL学习资料
- 移动支付漫谈
- Android Studio使用教程(一)
- Android 屏幕适配(英文版)20150420日更新
- iOS网络请求总结
- 第二章第4题
- 安装cocoapods管理第三方库时的问题
- JAVA 获取当前执行的函数名、当前运行的类名等等信息
- 如何通过匹配||切分字符串
- 错误 1 error C2440: “static_cast”: 无法从“void (__thiscall ClientDlg::* )
- 算法导论11.2-4未占用槽分配存储
- 工作中积累的日期、数字处理方法
- 细化-从百度识图效果对智能识图的一些思考2