iOS Get同步与异步
2015-12-03 19:54
330 查看
//异步所需要签订的协议
@interfaceGetViewController
()<NSURLConnectionDelegate,NSURLConnectionDataDelegate>
//声明一个链接属性,主要用是在页面销毁但加载还没完成的时候,在dealloc上终止用的
@property
(nonatomic,retain)NSURLConnection
*connection;
//声明一个可变的data用于获取到完整的data;,注意在那里初始化
@property
(nonatomic,retain)NSMutableData
*receiveData;
- (void)dealloc
{
//注意:当这个页面被销毁的时候如果请求还没有完成需要终止这个链接
[_connectioncancel];
[_connectionrelease];
[superdealloc];
}
-----------------------------------------------------------------------
#define kSearchURL @"http://api.map.baidu.com/place/v2/search?query=公厕®ion=上海&output=json&ak=6E823f587c95f0148c19993539b99295"
#define kNewsListURL @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"
#define kNewsListParam @"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213"
#define kImageURL @"http://image.zcool.com.cn/56/13/1308200901454.jpg"
-------------------------------------------------------------------------
get同步
// 如果有中文转化一下编码格式
NSString *newStr = [kSearchURL stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSetURLFragmentAllowedCharacterSet]];
//把字符串的网址转化成网址对象
NSURL
*url = [NSURLURLWithString:newStr];
//创建一个请求
//timeoutInterval请求超时的时间 秒为单位
NSMutableURLRequest
*request = [NSMutableURLRequestrequestWithURL:urlcachePolicy:(NSURLRequestUseProtocolCachePolicy)timeoutInterval:10];
//设置一个请求标识
[request
setHTTPMethod:@"Get"];
//利用这个请求 创建一个链接
NSError
*error = nil;
//创建空的,服务器响应信息
NSURLResponse
*response = nil;
//建立同步链接并得到返回的数据(data)
NSData *data = [NSURLConnection
sendSynchronousRequest:request
returningResponse:&response
error:&error];
//解析数据
NSMutableDictionary
*dataDic = [NSJSONSerialization
JSONObjectWithData:data
options:(NSJSONReadingMutableContainers)
error:nil];
NSLog(@"%@",dataDic);
NSLog(@"%@",response);
NSLog(@"%@",data);
------------------------------------------------------------------------
//get异步请求
//获取网址对象
(有中文 需要转码)
NSString
*urlStr = [kSearchURL
stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet
URLFragmentAllowedCharacterSet]];
//利用网址创建网址对象
NSURL
*url = [NSURL
URLWithString:urlStr];
//利用网址对象创建一个请求
NSMutableURLRequest
*request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:(NSURLRequestUseProtocolCachePolicy)
timeoutInterval:10];
//标识请求类型
//注意:加标识符
[request
setHTTPMethod:@"Get"];
-------------------------------------------------------
#pragma mark -- block异步链接方法
[NSOperationQueue mainQueue]
代表回到主线程
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError)
{
//当数据请求完成的时候会指定这个block
NSLog(@"%@",data);
//判断是否在主线程
NSLog(@"%d",[NSThread isMainThread]);
}];
-------------------------------------------------------------------
#pragma mark -- 代理方法异步链接
//利用请求创建一个异步链接
self.connection
= [NSURLConnection
connectionWithRequest:requestdelegate:self];
//开始链接
[self.connectionstart];
---------------------------------------------------------------------
#pragma mark --代理方法
- (void)connection:(NSURLConnection
*)connection didReceiveResponse:(NSURLResponse
*)response
{
//链接成功时创建data
self.receiveData
= [NSMutableData
data];
NSLog(@"已经接收到服务器的响应信息,说明链接成功");
NSLog(@"%@",response);
}
- (void)connection:(NSURLConnection
*)connection didReceiveData:(NSData
*)data
{
//多次触发这个方法才能接收到完整的data
//所以这个时候需要拼接一下data
//拼接data
[self.receiveData appendData:data];
NSLog(@"接收到数据触发的方法");
}
- (void)connectionDidFinishLoading:(NSURLConnection
*)connection
{
NSLog(@"%@",self.receiveData);
//解析数据
NSMutableDictionary
*dataDic = [NSJSONSerialization
JSONObjectWithData:self.receiveData
options:(NSJSONReadingMutableContainers)error:nil];
NSLog(@"%@",dataDic);
//如果在tableView上展示的话
//注意:要刷新界面
NSLog(@"已经完成数据加载触发的方法");
}
//请求失败时触发
- (void)connection:(NSURLConnection
*)connection didFailWithError:(NSError
*)error
{
NSLog(@"请求失败时触发
%@",error);
}
UI第十六天 16-NSURLRequest
@interfaceGetViewController
()<NSURLConnectionDelegate,NSURLConnectionDataDelegate>
//声明一个链接属性,主要用是在页面销毁但加载还没完成的时候,在dealloc上终止用的
@property
(nonatomic,retain)NSURLConnection
*connection;
//声明一个可变的data用于获取到完整的data;,注意在那里初始化
@property
(nonatomic,retain)NSMutableData
*receiveData;
- (void)dealloc
{
//注意:当这个页面被销毁的时候如果请求还没有完成需要终止这个链接
[_connectioncancel];
[_connectionrelease];
[superdealloc];
}
-----------------------------------------------------------------------
#define kSearchURL @"http://api.map.baidu.com/place/v2/search?query=公厕®ion=上海&output=json&ak=6E823f587c95f0148c19993539b99295"
#define kNewsListURL @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"
#define kNewsListParam @"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213"
#define kImageURL @"http://image.zcool.com.cn/56/13/1308200901454.jpg"
-------------------------------------------------------------------------
get同步
// 如果有中文转化一下编码格式
NSString *newStr = [kSearchURL stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSetURLFragmentAllowedCharacterSet]];
//把字符串的网址转化成网址对象
NSURL
*url = [NSURLURLWithString:newStr];
//创建一个请求
//timeoutInterval请求超时的时间 秒为单位
NSMutableURLRequest
*request = [NSMutableURLRequestrequestWithURL:urlcachePolicy:(NSURLRequestUseProtocolCachePolicy)timeoutInterval:10];
//设置一个请求标识
[request
setHTTPMethod:@"Get"];
//利用这个请求 创建一个链接
NSError
*error = nil;
//创建空的,服务器响应信息
NSURLResponse
*response = nil;
//建立同步链接并得到返回的数据(data)
NSData *data = [NSURLConnection
sendSynchronousRequest:request
returningResponse:&response
error:&error];
//解析数据
NSMutableDictionary
*dataDic = [NSJSONSerialization
JSONObjectWithData:data
options:(NSJSONReadingMutableContainers)
error:nil];
NSLog(@"%@",dataDic);
NSLog(@"%@",response);
NSLog(@"%@",data);
------------------------------------------------------------------------
//get异步请求
//获取网址对象
(有中文 需要转码)
NSString
*urlStr = [kSearchURL
stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet
URLFragmentAllowedCharacterSet]];
//利用网址创建网址对象
NSURL
*url = [NSURL
URLWithString:urlStr];
//利用网址对象创建一个请求
NSMutableURLRequest
*request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:(NSURLRequestUseProtocolCachePolicy)
timeoutInterval:10];
//标识请求类型
//注意:加标识符
[request
setHTTPMethod:@"Get"];
-------------------------------------------------------
#pragma mark -- block异步链接方法
[NSOperationQueue mainQueue]
代表回到主线程
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError)
{
//当数据请求完成的时候会指定这个block
NSLog(@"%@",data);
//判断是否在主线程
NSLog(@"%d",[NSThread isMainThread]);
}];
-------------------------------------------------------------------
#pragma mark -- 代理方法异步链接
//利用请求创建一个异步链接
self.connection
= [NSURLConnection
connectionWithRequest:requestdelegate:self];
//开始链接
[self.connectionstart];
---------------------------------------------------------------------
#pragma mark --代理方法
- (void)connection:(NSURLConnection
*)connection didReceiveResponse:(NSURLResponse
*)response
{
//链接成功时创建data
self.receiveData
= [NSMutableData
data];
NSLog(@"已经接收到服务器的响应信息,说明链接成功");
NSLog(@"%@",response);
}
- (void)connection:(NSURLConnection
*)connection didReceiveData:(NSData
*)data
{
//多次触发这个方法才能接收到完整的data
//所以这个时候需要拼接一下data
//拼接data
[self.receiveData appendData:data];
NSLog(@"接收到数据触发的方法");
}
- (void)connectionDidFinishLoading:(NSURLConnection
*)connection
{
NSLog(@"%@",self.receiveData);
//解析数据
NSMutableDictionary
*dataDic = [NSJSONSerialization
JSONObjectWithData:self.receiveData
options:(NSJSONReadingMutableContainers)error:nil];
NSLog(@"%@",dataDic);
//如果在tableView上展示的话
//注意:要刷新界面
NSLog(@"已经完成数据加载触发的方法");
}
//请求失败时触发
- (void)connection:(NSURLConnection
*)connection didFailWithError:(NSError
*)error
{
NSLog(@"请求失败时触发
%@",error);
}
UI第十六天 16-NSURLRequest
相关文章推荐
- Local declaration of 'XXX' hides instance variable
- 单例模式两种创建方法详解
- ios 里如何处理四舍五入的问题
- iOS为有约束的空间添加动画
- ios (底层runtime)实现万能跳转
- 常用的iOS开源库
- iOS 点击子视图不让其响应父视图手势
- ios开发之block的使用,及注意事项
- iOS在线安装环境搭建
- iOS常用宏定义
- iOS8--关于regular和compact的理解
- 一切重新开始--一个iOS工程师的工作之旅-001
- iOS用户点击退出按钮,跳到登录界面的代码控制
- iOS开发 @synthesize + @property 用法
- nagios 被监控端一键配置脚本
- iOS 事件处理机制与图像渲染过程
- iOS-数据持久化-第三方框架FMDB的使用
- 项目适配iOS9 遇到的坑坑娃娃
- iOS-cocopods换源
- 一个ios手势密码功能实现