UI-GET/POST的同步异步网络请求
2014-07-11 07:15
281 查看
网络请求
HTTP协议的常见请求方式
(1) 同步GET
NSLog(@"同步GET方法实现");
//目的:获取网络的图片,加载到imageView上
NSString * str =
@"http://pic.dbmeizi.com/pics/53516441/s_p13539843.jpg";
//创建一个请求
NSURL * url = [NSURL
URLWithString:str];
//请求对象
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
//根据请求方式不同
根据这个请求给定不同的请求方法
//一般在ios中
使用"GET"或者"POST"
[request
setHTTPMethod:@"GET"];
//2.连接服务器
请求数据
//连接服务器的方式又两种
同步
异步
//会导致界面的卡死,(主线程阻塞)
//异步链接
不会导致卡死......
NSURLResponse * res =
nil;
NSError * error =
nil;
NSData * data = [NSURLConnection
sendSynchronousRequest:request
returningResponse:&res
error:&error];
NSLog(@"========%@",res);
//3.上述方法执行完毕 data中肯定有获得的数据
if (data !=
nil) {
UIImage * image = [UIImage
imageWithData:data];//将数据流的(NSData)转换为
图片对象
self.myImageView.image
= image;
}
(2)
#warning 同步POST方法实现
- (void)tongBuPOST:(UIButton*)button
{
NSLog(@"同步POST方法实现");
NSString * str =
@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
NSURL * url = [NSURL
URLWithString:str];
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.f];
[request
setHTTPMethod:@"POST"];
//给post请求需要设置一个body
//post的body
必须是一个NSData对象
NSString * bodyStr =
@"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213";
NSData * bodyData = [bodyStr
dataUsingEncoding:NSUTF8StringEncoding];
[request
setHTTPBody:bodyData];
//2.链接服务器
NSURLResponse * res =
nil;
NSError * error =
nil;
NSData * data = [NSURLConnection
sendSynchronousRequest:request
returningResponse:&res
error:&error];
//3.对服务器做一些奇奇怪该的事(转换为照片(UIImage)
或
文字(NSString) )
if (data !=
nil) {
NSString * result = [[NSString
alloc]
initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@",result);
[result
release];
}
}
(3)#warning 异步GET方法实现
- (void)yiBuGET:(UIButton*)button
{
NSLog(@"
异步GET方法实现");
//1.生成一个请求对象
NSString * str =
@"http://pic.dbmeizi.com/pics/lydiababy/s_p13538415.jpg";
NSURL * url = [NSURL
URLWithString:str];
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL: url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request
setHTTPMethod:@"GET"];
//2.链接服务器
异步链接
//如果缓存里面又东西了
就会每个代理方法走一次 需要签署NSURLConnectionDataDelegate
协议
[NSURLConnection
connectionWithRequest:request
delegate:self];
}
//1.到相应的httpheader
- (void)connection:(NSURLConnection
*)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"%s",__FUNCTION__);
self.receiveData
= [NSMutableData
data];
}
//2.接收数据
整个的数据分成很多分
发送
需要我们自己来拼接
- (void)connection:(NSURLConnection
*)connection didReceiveData:(NSData *)data
{
NSLog(@"%s",__FUNCTION__);
//每次接收到服务器传来的小块data
都把他们拼接到receiveData之后
[self.receiveData
appendData:data];
}
//3.数据接收完毕
- (void)connectionDidFinishLoading:(NSURLConnection
*)connection
{
//当执行这个方法时
意味着receiveData中已经是一个完整的数据
//可以直接使用了
NSLog(@"%s",__FUNCTION__);
UIImage * image = [UIImage
imageWithData:self.receiveData];
self.myImageView.image
= image;
}
*****************最重要的最常用的异步实现方法******************
(4)#warning 异步POST方法实现
- (void)yiBuPOST:(UIButton*)button
{
NSLog(@"
异步POST方法实现");
NSString * str =
@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
NSURL * url = [NSURL
URLWithString:str];
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0] ;
[request setHTTPMethod:@"POST"];//设置请求方式
GET POST
NSString * bodyStr =
@"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213";
//设置post请求的body数据
NSData * bodyData = [bodyStr
dataUsingEncoding:NSUTF8StringEncoding];
[request
setHTTPBody:bodyData];
//2.链接服务器
链接方式:异步
同步
[NSURLConnection
sendAsynchronousRequest:request
queue:[NSOperationQueue
mainQueue]
completionHandler:^(NSURLResponse *response,
NSData *data,
NSError *connectionError) {
//在这个块语法中
上面的response data connectionError
都是可以使用的方法 data
是已经请求完毕的数据
NSString * result = [[NSString
alloc]
initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@",result);
}];
}
HTTP协议的常见请求方式
(1) 同步GET
NSLog(@"同步GET方法实现");
//目的:获取网络的图片,加载到imageView上
NSString * str =
@"http://pic.dbmeizi.com/pics/53516441/s_p13539843.jpg";
//创建一个请求
NSURL * url = [NSURL
URLWithString:str];
//请求对象
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
//根据请求方式不同
根据这个请求给定不同的请求方法
//一般在ios中
使用"GET"或者"POST"
[request
setHTTPMethod:@"GET"];
//2.连接服务器
请求数据
//连接服务器的方式又两种
同步
异步
//会导致界面的卡死,(主线程阻塞)
//异步链接
不会导致卡死......
NSURLResponse * res =
nil;
NSError * error =
nil;
NSData * data = [NSURLConnection
sendSynchronousRequest:request
returningResponse:&res
error:&error];
NSLog(@"========%@",res);
//3.上述方法执行完毕 data中肯定有获得的数据
if (data !=
nil) {
UIImage * image = [UIImage
imageWithData:data];//将数据流的(NSData)转换为
图片对象
self.myImageView.image
= image;
}
(2)
#warning 同步POST方法实现
- (void)tongBuPOST:(UIButton*)button
{
NSLog(@"同步POST方法实现");
NSString * str =
@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
NSURL * url = [NSURL
URLWithString:str];
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.f];
[request
setHTTPMethod:@"POST"];
//给post请求需要设置一个body
//post的body
必须是一个NSData对象
NSString * bodyStr =
@"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213";
NSData * bodyData = [bodyStr
dataUsingEncoding:NSUTF8StringEncoding];
[request
setHTTPBody:bodyData];
//2.链接服务器
NSURLResponse * res =
nil;
NSError * error =
nil;
NSData * data = [NSURLConnection
sendSynchronousRequest:request
returningResponse:&res
error:&error];
//3.对服务器做一些奇奇怪该的事(转换为照片(UIImage)
或
文字(NSString) )
if (data !=
nil) {
NSString * result = [[NSString
alloc]
initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@",result);
[result
release];
}
}
(3)#warning 异步GET方法实现
- (void)yiBuGET:(UIButton*)button
{
NSLog(@"
异步GET方法实现");
//1.生成一个请求对象
NSString * str =
@"http://pic.dbmeizi.com/pics/lydiababy/s_p13538415.jpg";
NSURL * url = [NSURL
URLWithString:str];
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL: url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
[request
setHTTPMethod:@"GET"];
//2.链接服务器
异步链接
//如果缓存里面又东西了
就会每个代理方法走一次 需要签署NSURLConnectionDataDelegate
协议
[NSURLConnection
connectionWithRequest:request
delegate:self];
}
//1.到相应的httpheader
- (void)connection:(NSURLConnection
*)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"%s",__FUNCTION__);
self.receiveData
= [NSMutableData
data];
}
//2.接收数据
整个的数据分成很多分
发送
需要我们自己来拼接
- (void)connection:(NSURLConnection
*)connection didReceiveData:(NSData *)data
{
NSLog(@"%s",__FUNCTION__);
//每次接收到服务器传来的小块data
都把他们拼接到receiveData之后
[self.receiveData
appendData:data];
}
//3.数据接收完毕
- (void)connectionDidFinishLoading:(NSURLConnection
*)connection
{
//当执行这个方法时
意味着receiveData中已经是一个完整的数据
//可以直接使用了
NSLog(@"%s",__FUNCTION__);
UIImage * image = [UIImage
imageWithData:self.receiveData];
self.myImageView.image
= image;
}
*****************最重要的最常用的异步实现方法******************
(4)#warning 异步POST方法实现
- (void)yiBuPOST:(UIButton*)button
{
NSLog(@"
异步POST方法实现");
NSString * str =
@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
NSURL * url = [NSURL
URLWithString:str];
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0] ;
[request setHTTPMethod:@"POST"];//设置请求方式
GET POST
NSString * bodyStr =
@"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213";
//设置post请求的body数据
NSData * bodyData = [bodyStr
dataUsingEncoding:NSUTF8StringEncoding];
[request
setHTTPBody:bodyData];
//2.链接服务器
链接方式:异步
同步
[NSURLConnection
sendAsynchronousRequest:request
queue:[NSOperationQueue
mainQueue]
completionHandler:^(NSURLResponse *response,
NSData *data,
NSError *connectionError) {
//在这个块语法中
上面的response data connectionError
都是可以使用的方法 data
是已经请求完毕的数据
NSString * result = [[NSString
alloc]
initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@",result);
}];
}
相关文章推荐
- UI网络笔记(二):UI网络之Post同步和异步的密文请求
- UI 网络请求(同步GET,同步POST,异步GET,异步POST)具体操作
- UI14_GET-POST-BLOCK(网络请求的同步异步)
- UIday1601:网络编程 GET POST 的同步或异步请求,服务器接口的简单介绍。
- iOS网络请求GET&POST,同步&异步
- 6.15 网络请求,Get和Post,同步和异步
- iOS 网络编程(HTTP 同步GET请求,同步POST请求,异步GET请求,异步POST请求)
- 网络请求(GET POST同步异步)大总结
- 网络处理2-异步POST请求和同步请求
- Objective-c语言_计算机网络(UI)同步get,post和异步get,post
- 网络请求 同步get 同步post 异步get 异步post
- IOS开发之NSURL网络请求,同步异步,GET,POST
- 42.网络请求POST同步和异步
- 网络数据请求(同步/异步连接下的GET/POST请求)
- 网络get/post请求异步同步请求回调
- 常见的网络请求 同步GET, 同步POST, 异步GET, 异步POST
- IOS网络请求(同步GET,同步POST,异步GET,异步POST)
- 网络处理2-异步POST请求和同步请求
- iOS网络请求总结、GET、POST、同步、异步代码块、异步代理、第三方AFNetWorking2.0使用
- iOS开发:网络请求之get、post同步异步请求