Post同步异步
2015-12-03 20:14
351 查看
//以下使用post
网址与数据分隔开
#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"
//代理方法所需要的协议
@interfacePostViewController
()<NSURLConnectionDelegate,NSURLConnectionDataDelegate>
//声明一个链接属性 方便在dealloc中使用
@property (nonatomic
,retain)NSURLConnection
*connection;
//声明一个可变data 用于存放数据
@property (nonatomic
,retain)NSMutableData
*receiveData;
- (void)dealloc
{
[_connectioncancel];
[_connectionrelease];
[_receiveDatarelease];
[superdealloc];
}
-----------------------------------------------------------------------
//Post同步
// 1.创建网址对象(没中文就不必转编码)
NSURL *url = [NSURL
URLWithString:kNewsListURL];
// 2.利用网址对象 创建请求
NSMutableURLRequest *request
= [NSMutableURLRequest
requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy)
timeoutInterval:10];
//设置标识
[request setHTTPMethod:@"Post"];
//把字符串转化成data使用UTF-8的编码格式(携带的请求体)
NSData *data = [kNewsListParam
dataUsingEncoding:NSUTF8StringEncoding];
//注意区别:
post请求可以携带一个请求体
[request setHTTPBody:data];
//创建同步链接
NSData *newData = [NSURLConnection
sendSynchronousRequest:request
returningResponse:nil
error:nil];
//解析数据
NSMutableDictionary *dataDic
= [NSJSONSerialization
JSONObjectWithData:newData
options:(NSJSONReadingMutableContainers)
error:nil];
NSLog(@"%@",dataDic);
-----------------------------------------------------------------------
Post异步请求
//获取网址对象
NSURL *url = [NSURL
URLWithString:kNewsListURL];
//利用网址对象创建一个请求
NSMutableURLRequest *request
= [NSMutableURLRequest
requestWithURL:url
cachePolicy:(NSURLRequestUseProtocolCachePolicy)
timeoutInterval:10];
//创建标识
//注意:post请求需要添加标识符
[request setHTTPMethod:@"post"];
//给这个请求添加请求体
NSData *data = [kNewsListParam
dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
//利用请求创建一个链接
(异步代理方法)
-----------------------------------------------------------------------
#pragma mark -- block方法
[NSURLConnection
sendAsynchronousRequest:requestqueue:[NSOperationQueue
mainQueue]completionHandler:^(NSURLResponse
* _Nullable response,NSData
*_Nullable data,NSError
*_Nullable
connectionError) {
}];
-----------------------------------------------------------------------
self.connection
= [NSURLConnection
connectionWithRequest:requestdelegate:self];
[self.connectionstart];
-----------------------------------------------------------------------
#pragma mark --代理方法
- (void)connection:(NSURLConnection
*)connection didReceiveResponse:(NSURLResponse
*)response
{
//链接成功时创建data
self.receiveData
= [NSMutableData
data];
}
- (void)connection:(NSURLConnection
*)connection didReceiveData:(NSData
*)data
{
//拼接data
[self.receiveData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection
*)connection
{
//解析数据
NSMutableDictionary *dataDic
= [NSJSONSerialization
JSONObjectWithData:self.receiveData
options:(NSJSONReadingMutableContainers)
error:nil];
NSLog(@"%@",dataDic);
}
- (void)connection:(NSURLConnection
*)connection didFailWithError:(NSError
*)error
{
}
UI第十六天 16-NSURLRequest
网址与数据分隔开
#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"
//代理方法所需要的协议
@interfacePostViewController
()<NSURLConnectionDelegate,NSURLConnectionDataDelegate>
//声明一个链接属性 方便在dealloc中使用
@property (nonatomic
,retain)NSURLConnection
*connection;
//声明一个可变data 用于存放数据
@property (nonatomic
,retain)NSMutableData
*receiveData;
- (void)dealloc
{
[_connectioncancel];
[_connectionrelease];
[_receiveDatarelease];
[superdealloc];
}
-----------------------------------------------------------------------
//Post同步
// 1.创建网址对象(没中文就不必转编码)
NSURL *url = [NSURL
URLWithString:kNewsListURL];
// 2.利用网址对象 创建请求
NSMutableURLRequest *request
= [NSMutableURLRequest
requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy)
timeoutInterval:10];
//设置标识
[request setHTTPMethod:@"Post"];
//把字符串转化成data使用UTF-8的编码格式(携带的请求体)
NSData *data = [kNewsListParam
dataUsingEncoding:NSUTF8StringEncoding];
//注意区别:
post请求可以携带一个请求体
[request setHTTPBody:data];
//创建同步链接
NSData *newData = [NSURLConnection
sendSynchronousRequest:request
returningResponse:nil
error:nil];
//解析数据
NSMutableDictionary *dataDic
= [NSJSONSerialization
JSONObjectWithData:newData
options:(NSJSONReadingMutableContainers)
error:nil];
NSLog(@"%@",dataDic);
-----------------------------------------------------------------------
Post异步请求
//获取网址对象
NSURL *url = [NSURL
URLWithString:kNewsListURL];
//利用网址对象创建一个请求
NSMutableURLRequest *request
= [NSMutableURLRequest
requestWithURL:url
cachePolicy:(NSURLRequestUseProtocolCachePolicy)
timeoutInterval:10];
//创建标识
//注意:post请求需要添加标识符
[request setHTTPMethod:@"post"];
//给这个请求添加请求体
NSData *data = [kNewsListParam
dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
//利用请求创建一个链接
(异步代理方法)
-----------------------------------------------------------------------
#pragma mark -- block方法
[NSURLConnection
sendAsynchronousRequest:requestqueue:[NSOperationQueue
mainQueue]completionHandler:^(NSURLResponse
* _Nullable response,NSData
*_Nullable data,NSError
*_Nullable
connectionError) {
}];
-----------------------------------------------------------------------
self.connection
= [NSURLConnection
connectionWithRequest:requestdelegate:self];
[self.connectionstart];
-----------------------------------------------------------------------
#pragma mark --代理方法
- (void)connection:(NSURLConnection
*)connection didReceiveResponse:(NSURLResponse
*)response
{
//链接成功时创建data
self.receiveData
= [NSMutableData
data];
}
- (void)connection:(NSURLConnection
*)connection didReceiveData:(NSData
*)data
{
//拼接data
[self.receiveData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection
*)connection
{
//解析数据
NSMutableDictionary *dataDic
= [NSJSONSerialization
JSONObjectWithData:self.receiveData
options:(NSJSONReadingMutableContainers)
error:nil];
NSLog(@"%@",dataDic);
}
- (void)connection:(NSURLConnection
*)connection didFailWithError:(NSError
*)error
{
}
UI第十六天 16-NSURLRequest
相关文章推荐
- if switch练习(体重)
- 迭代模型
- CodeForces - 27E--Number With The Given Amount Of Divisors(反素数)
- 【PHP7】- 编译安装与新特性初体验
- quartz简单定时任务示例
- 排除中兴F607光猫无法拨打部分电话号码的故障
- python 简单爬虫实现
- 瀑布模型
- 边做边改模型
- 【android_温故知新】View 类的 XML 属性及相关方法说明
- 1087. All Roads Lead to Rome (30)
- zjnu 1462 - 舞会 (dijkstra) 解题报告
- Java 中的守护(Daemon)线程中finally代码块是否执行的问题
- HDU - 1392 Surround the Trees
- 读代码大全2——推荐书籍
- 求同一个圆内的圆弧的并的算法
- hdu 2454 Degree Sequence of Graph G
- 1203正规式转换为有穷自动机
- Android Material Design 控件之TabLayout 学习
- 大数据开发、云计算开发学习路线