ios同步请求,异步请求,GET请求,POST请求

区别:

1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作;

2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行;

3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性不高,地址最多255字节;

4、POST请求,将参数放到body里面。POST请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在body里面,不易被捕获。

Post请求,需要先弄一个数据体,将数据体提交给服务器,才能获取到服务器的响应,性能不好,效率低。但是安全性高!

 

接下来我们看看post和get请求的同步和异步请求:

1 //异步get请求
2 //    1.设置请求路径
3     NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text];
4     NSURL *url=[NSURL URLWithString:urlStr];
5     //    2.创建请求对象
6     NSURLRequest *request=[NSURLRequest requestWithURL:url];
7 
8     //    3.发送请求
9     NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

 

 1 //异步post方法
 2 
 3 // 1.设置请求路径
 4     NSURL *URL=[NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"];//不需要传递参数
 5     // 2.创建请求对象
 6     NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默认为get请求
 7     request.timeoutInterval=5.0;//设置请求超时为5秒
 8     request.HTTPMethod=@"POST";//设置请求方法
 9     //设置请求体
10     NSString *param=[NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text];
11     //把拼接后的字符串转换为data,设置请求体
12     request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding];
13     // 3.发送请求
14     NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

 

 1 //异步方法代理
 2 
 3 //接收到服务器回应的时候调用此方法
 4 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
 5 {
 6     NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
 7     NSLog(@"%@",[res allHeaderFields]);
 8 }
 9 
10 //接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次
11 -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
12 {
13 }
14 
15 //数据传完之后调用此方法
16 -(void)connectionDidFinishLoading:(NSURLConnection *)connection
17 {
18 }
19 
20 
21 //网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法
22 -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
23     NSLog(@"%@",[error localizedDescription]);
24 }

 

posted @ 2015-09-12 00:11  梦影随风  阅读(153)  评论(0编辑  收藏  举报