您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: