博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
同步、异步请求
阅读量:5114 次
发布时间:2019-06-13

本文共 3831 字,大约阅读时间需要 12 分钟。

 

 

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

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

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

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

1、     同步GET请求  

1    //第一步,创建URL   2  3    NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];   4  5   //第二步,通过URL创建网络请求   6  7    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];   8  9   //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)  10 11    其中缓存协议是个枚举类型包含:  12 13    NSURLRequestUseProtocolCachePolicy(基础策略)  15    NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)  16 17      NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)  18 19      NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)  20 21      NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)  22 23     NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)  24 25    //第三步,连接服务器  26 27    NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];  28 29    NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];  30 31    NSLog(@"%@",str);

  

2、同步POST请求  

//第一步,创建URL    NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];    //第二步,创建请求      NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];      [request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET     NSString *str = @"type=focus-c";//设置参数    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];      [request setHTTPBody:data];     //第三步,连接服务器     NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];      NSString *str1 = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];      NSLog(@"%@",str1);

 

3、异步GET请求  

//第一步,创建url      NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];   //第二步,创建请求      NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];      //第三步,连接服务器      NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

 

4、异步POST请求  

  

//第一步,创建url      NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];    //第二步,创建请求      NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];      [request setHTTPMethod:@"POST"];      NSString *str = @"type=focus-c";     NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];      [request setHTTPBody:data];      //第三步,连接服务器      NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

 

5、异步请求的代理方法  

//接收到服务器回应的时候调用此方法  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response  {      NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;      NSLog(@"%@",[res allHeaderFields]);      self.receiveData = [NSMutableData data];  }  //接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次  -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data  {      [self.receiveData appendData:data];  }  -(void)connectionDidFinishLoading:(NSURLConnection *)connection  {      NSString *receiveStr = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];      NSLog(@"%@",receiveStr);  }  //网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法   -(void)connection:(NSURLConnection *)connection   didFailWithError:(NSError *)error  {  NSLog(@"%@",[error localizedDescription]);

 

转载于:https://www.cnblogs.com/LiuLady12138/p/4739639.html

你可能感兴趣的文章
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>