IOS开发笔记-NSURLConnection同步请求和异步请求以及get方法,post方法
来源:互联网 发布:淘宝自定义模块代码 编辑:程序博客网 时间:2024/06/04 23:27
移动互联网时代,移动通信已经使手机客户端必不可少的功能,我们的各种应用中也少不了网络通信,需要增强手机客户端和服务器之间的交换。本文讲介绍NSURLConnection中的同步请求,异步请求,get方法和post方法。
同步请求:数据会造成主线程阻塞,通常在大数据或者网络不畅的情况下不使用,会使用户与UI失去交互,出现程序的卡死,如果数据量少可以使用同步请求。
异步请求:异步请求不会阻塞主线程,会建立一个新的线程来做操作。
不管是异步请求还是同步请求,建立连接的步骤上虽然有所差别,但是不体上是一致的:
1、创建NSURL
2、创建Request对象
3、创建NSURLConnection连接
下面通过一些简单的例子做介绍:
1、#define URL @"http://www.baidu.com"
////////////////同步请求////////////////
//第一步:创建URL
NSURL *myURL=[NSURL URLWithString:URL];
//第二步:创建一个请求
NSURLRequest *myRequest=[NSURLRequest requestWithURL:myURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
//第三步:建立连接
NSURLResponse *myResponse=nil;
NSError *myErro=nil;
//向服务器发起请求(发起之后,线程会一直等待服务器响应,直到超出最大响应时间)
NSData *myData=[NSURLConnection sendSynchronousRequest:myRequest returningResponse:&myResponse error:&myErro];
NSLog(@"myData=%@",myData);//输出数据
NSLog(@"myErro=%@",[myErro localizedDescription]);//输出错误
2、////////////////////异步请求///////////////////////
//创建URLNSURL *myURL=[NSURLURLWithString:URL];
//创建请求
NSURLRequest *myRuquest=[NSURLRequestrequestWithURL:myURL cachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60];
//建立连接(异步的response在专门的代理协议中实现)
[NSURLConnectionconnectionWithRequest:myRuquest delegate:self];
异步加载数据需要下面几个方法常用的有四个方法:
#pragma mark URLConnectionDataDelegate
//接受服务器响应--接收到服务器回应的时候会执行该方法
-(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
NSLog(@"服务器响应");
self.myData = [NSMutableDatadataWithCapacity:5000];
}
//接收服务器数据--接收服务器传输数据的时候会调用,会根据数据量的大小,多次执行
-(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"服务器返回数据");
//将返回数据放入缓存区
[self.myDataappendData:data];
}
//显示数据,直到所有的数据接收完毕
-(void) connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"数据接受完毕");
NSLog(@"myData=%@",self.myData);
}
//接受失败的时候调用的方法(断网或者是连接超时)
-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"数据接受失败,失败原因:%@",[error localizedDescription]);
}
3、
///////////////get请求/////////////////////
NSString *myStr=self.TextFieldQQ.text;
NSString *strUrl=[@"http://webservice.webxml.com.cn/webservices/qqOnlineWebservice.asmx/qqCheckOnline?qqCode=" stringByAppendingFormat:@"%@",myStr];
//创建URL
NSURL *myUrl=[NSURL URLWithString:strUrl];
//创建请求
NSURLRequest *myRequest=[NSURLRequest requestWithURL:myUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
//建立连接
[NSURLConnection connectionWithRequest:myRequest delegate:self];
4、
///////////////////////////////post请求///////////////////////////////
NSString *postStr=@"http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx/qqCheckOnline";
NSURL *postUrl=[NSURLURLWithString:postStr];
NSMutableURLRequest *postRequest=[NSMutableURLRequestrequestWithURL:postUrl cachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60];
//将参数做成字符串
NSString *postStr1=[NSStringstringWithFormat: @"qqCode=%@",self.TextFieldQQ.text];
//转换成NSData
NSData *postData=[postStr1dataUsingEncoding:NSUTF8StringEncoding];
//区别点,将参数作为Body体
[postRequest setHTTPBody:postData];
//必须手动声明当前的请求方式为POST(如果不设置,默认的是“GET”方法)
[postRequest setHTTPMethod:@"POST"];
//根据postRequest创建连接,以及执行的协议
[NSURLConnectionconnectionWithRequest:postRequest delegate:self];
GET请求:将参数直接写在访问路径上,如:@“http://webservice.webxml.com.cn/webservices/qqOnlineWebservice.asmx/qqCheckOnline?qqCode=”参数容易被外界看到,不安全
POST请求:将参数放在Body里面,如:@"http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx/qqCheckOnline"外界看不到参数,安全性比较高
注意:POST创建的NSURL是不带参数的,需要将请求的参数放入Body中,所以需要用NSMutableURLRequest来创建请求。
参考文章:http://blog.sina.com.cn/s/blog_7ad8771f0101ce5a.html
http://m.blog.csdn.net/blog/xyz_lmn/8968182
- IOS开发笔记-NSURLConnection同步请求和异步请求以及get方法,post方法
- iOS开发 GET、POST请求方法:NSURLConnection篇
- 【iOS开发】 同步请求、异步请求、GET请求、POST请求
- iOS开发 -- GET 和 POST请求(同步异步链接)
- okHttpClient异步同步的get和post请求方法
- ios之NSURLConnection网络请求数据/GET与POST方法
- iOS中NSURLConnection、NSURLSession 常用请求(GET、POST)方法总结
- iOS开发:网络请求之get、post同步异步请求
- 网络请求的get,post 方法,同步,异步请求
- iOS海哥开发笔记 (海哥原创,iOS 之同步请求、异步请求、GET请求、POST请求 )
- iOS小明开发笔记(二十六) (同步、异步请求, GET、POST请求)
- iOS陆哥开发笔记(二十七) (同步、异步请求, GET、POST请求)
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- ffmpeg-0.5快进快退所涉及的代码
- 字符码值映射
- 利用快速排序算法的思想,在一组随机排序数中,查找第K小的值。
- 基于ARM的模拟器
- 关于Hibernate异常:No Dialect mapping for JDBC type: -1
- IOS开发笔记-NSURLConnection同步请求和异步请求以及get方法,post方法
- 设计模式---适配器
- 解析 Linux 中的 VFS 文件系统机制
- Makefile中的几种赋值方式
- 关于在技术领域的一点感慨
- opencv子矩阵操作
- iOS 设备听筒距离监测
- 如何美化界面(MFC)
- 流年暗换,逝去的光阴旖旎不复