码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——网络编程OC篇&数据请求总结

时间:2015-06-04 22:39:54      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

数据请求总结

 

 

  1 //**************************************GET
  2 //同步
  3 /*
  4 //第一步,创建URL
  5 NSURL * url = [[NSURL alloc]initWithString:@"http://e.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=66f9b9980ef431adbcd2473a7d0097cc/08f790529822720ed8bdbef079cb0a46f21fab4d.jpg"];
  6 //第二步,通过URL创建request请求
  7 NSURLRequest * request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15];
  8 //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
  9 
 10 //  其中缓存协议是个枚举类型包含:
 11 //
 12 //  NSURLRequestUseProtocolCachePolicy(基础策略)
 13 //
 14 //  NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)
 15 //
 16 //  NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)
 17 //
 18 //  NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)
 19 //
 20 //  NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)
 21 //
 22 //  NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)
 23 //第三步,连接服务器
 24 NSURLResponse * respones = nil;
 25 NSError * error = nil;
 26 NSData * reviced = [NSURLConnection sendSynchronousRequest:request returningResponse:&respones  error:&error];
 27 //第四步,将数据转换成图片
 28 UIImage * image = [[UIImage alloc]initWithData:reviced];
 29 _imageView.image = image;
 30 */
 31 
 32 //异步
 33 /**
 34 //第一步,创建URL
 35 NSURL * url = [[NSURL alloc]initWithString:@"http://e.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=66f9b9980ef431adbcd2473a7d0097cc/08f790529822720ed8bdbef079cb0a46f21fab4d.jpg"];
 36 //第二步,通过URL创建request请求
 37 NSURLRequest * request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15];
 38 //第三步,连接服务器
 39 [NSURLConnection connectionWithRequest:request delegate:self];//(需要在.h中指定代理方法)
 40 //接受到服务器的回应调用
 41 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
 42 {
 43     [self.reviceData setLength:0 ];
 44     
 45 }
 46 //数据传输中一直调用
 47 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
 48 {
 49     [self.reviceData appendData:data];
 50     
 51 }
 52 //数据传输完才会调用
 53 - (void)connectionDidFinishLoading:(NSURLConnection *)connection
 54 {
 55     UIImage * image = [[UIImage alloc]initWithData:self.reviceData];
 56     _imageView.image = image;
 57     
 58 }
 59 */
 60 
 61 
 62 //**************************************POST
 63 //同步
 64 /**
 65  //第一步,创建URL
 66  NSURL * url = [[NSURL alloc]initWithString:@"http://api.hudong.com/iphonexml.do"];
 67  //第二步,通过URL创建可变的request请求(只有创建可变的request才能设置POST请求)
 68  NSMutableURLRequest * request1 = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:100];
 69  //timeoutInterval:post超时最大时间是240秒,在方法中设置多少秒也没用。
 70  
 71  //第三步,设置POST请求方式
 72  [request1 setHTTPMethod:@"POST"];
 73  //第四步,设置参数
 74  NSString * bodyStr = @"type=focus-c";
 75  NSData * body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
 76  [request1 setHTTPBody:body];
 77  //第五步,连接服务器
 78  NSData * data = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil];
 79  NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
 80  NSLog(@"%@",str);
 81  */
 82 
 83 
 84 //异步
 85 /**
 86  //第一步,创建URL
 87  NSURL * url = [[NSURL alloc]initWithString:@"http://api.hudong.com/iphonexml.do"];
 88  //第二步,通过URL创建可变的request请求(只有创建可变的request才能设置POST请求)
 89  NSMutableURLRequest * request1 = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:100];
 90  //timeoutInterval:post超时最大时间是240秒,在方法中设置多少秒也没用。
 91  
 92  //第三步,设置POST请求方式
 93  [request1 setHTTPMethod:@"POST"];
 94  //第四步,设置参数
 95  NSString * bodyStr = @"type=focus-c";
 96  NSData * body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
 97  [request1 setHTTPBody:body];
 98  //第五步,连接服务器
 99  [[NSURLConnection alloc]initWithRequest:request2 delegate:self]
100  
101  //接受到服务器的回应调用
102  - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
103  {
104  [self.reviceData setLength:0 ];
105  
106  }
107  //数据传输中一直调用
108  - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
109  {
110  [self.reviceData appendData:data];
111  
112  }
113  //数据传输完才会调用
114  - (void)connectionDidFinishLoading:(NSURLConnection *)connection
115  {
116  NSString * str = [[NSString alloc]initWithData:self.reviceData encoding:NSUTF8StringEncoding];
117  NSLog(@"%@",str);
118  }
119  */
120 
121 
122 //委托方法
123 /*
124  一般用到四个委托方法:
125  
126  //接受到respone,这里面包含了HTTP请求状态码和数据头信息,包括数据长度、编码格式等
127  -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ NSLog(@"response = %@",response); _backData = [[NSMutableData alloc]init];
128  }
129  
130  //接受到数据时调用,完整的数据可能拆分为多个包发送,每次接受到数据片段都会调用这个方法,所以需要一个全局的NSData对象,用来把每次的数据拼接在一起
131  -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
132  [_backData appendData:data];
133  }
134  
135  //数据接受结束时调用这个方法,这时的数据就是获得的完整数据了,可以使用数据做之后的处理了
136  -(void)connectionDidFinishLoading:(NSURLConnection *)connection{
137  NSLog(@"%@",[[NSString alloc]initWithData:_backData encoding:NSUTF8StringEncoding]);
138  }
139  
140  //这是请求出错是调用,错误处理不可忽视
141  -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
142  if (error.code == NSURLErrorTimedOut) {
143  NSLog(@"请求超时");
144  }
145  NSLog(@"%@",[error localizedDescription]);
146  }
147 
148  */

 

 

iOS开发——网络编程OC篇&数据请求总结

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4553136.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!