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

数据请求总结

  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  */
时间: 2024-12-14 09:44:29

iOS开发——网络编程OC篇&数据请求总结的相关文章

iOS开发——网络编程OC篇&数据解析总结

数据解析总结 1 //***************************************************XML 2 3 /** 4 NSXML 5 */ 6 /** 7 // 1. 开始解析XML文档 8 - (void)parserDidStartDocument: 9 10 // 2. 开始解析某个元素,会遍历整个XML,识别元素节点名称 11 - (void)parser:didStartElement:namespaceURI:qualifiedName:attrib

iOS开发——网络编程OC篇&(三)数据请求

一.GET请求和POST请求简单说明 创建GET请求 1 // 1.设置请求路径 2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]; 3 NSURL *url=[NSURL URLWithString:urlStr]; 4 5 // 2.创建请求对

iOS开发——网络编程OC篇&(九)数据解析

数据解析 关于iOS开发的中数据解析的方法有两种JSON和XML,这里只做简单的介绍,会使用就可以了. JSON—— 关于JSON的解析经过很多爱好者的分析使用相同自带的还是最好的,不管是从使用的容易度还是性能方面 NSJSONSerialization 1 -(void)start 2 { 3 4 NSString* path = [[NSBundle mainBundle] pathForResource:@"Notes" ofType:@"json"]; 5

iOS开发——网络编程OC篇&总结

网络开发总结 一.一个HTTP请求的基本要素 1.请求URL:客户端通过哪个路径找到服务器 2.请求参数:客户端发送给服务器的数据 * 比如登录时需要发送的用户名和密码 3.返回结果:服务器返回给客户端的数据 * 一般是JSON数据或者XML数据 二.基本的HTTP请求的步骤(移动客户端)1.拼接"请求URL" + "?" + "请求参数" * 请求参数的格式:参数名=参数值 * 多个请求参数之间用&隔开:参数名1=参数值1&参数

iOS开发——网络编程OC篇&Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

iOS开发——网络编程OC篇&(十)NSURLConnection/NSSeccession

一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... (3)NSMutableURLRequest:NSURLRequest的子类 (4)NSURLConnection:负责发送请求,建立客户端和服务器的连接.发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 二.NSURLConnection的使用 1.简单说明 使用NSURL

iOS开发——网络编程OC篇&(十二)AFN详解

AFN详解 众所周知,苹果搞的一套框架NSContention发送请求与接收请求的方式十分繁琐.操作起来很不方便.不仅要做区分各种请求设置各种不同的参数,而且还要经常在多线程里操作,同时还要对请求与返回的数据做各种序列化的操作,同时还要考虑请求数据的安全等一堆问题. 一.早前的几个网络框架 1.ASI框架: HTTP终结者.很牛, 但是有BUG, 已经停止更新. 2.MKNetworkKit (印度人写的). 3.AFN一直还在更新. AFNetworking的出现:MAC/iOS设计的一套网络

iOS开发——网络编程OC篇&(一)XMPP简单介绍与准备

XMPP简单介绍与准备 一.即时通讯简单介绍 1.简单说明 即时通讯技术(IM)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容. 有许多的IM系统,如AOL IM.Yahoo IM. MSN以及QQ,它们最大的区别在于各自通讯协议的实现,所以即时通讯技术的核心在于它的传输协议. 协议用来说明信息在网络上如何传输,如果有了统一的传输协议,那么应当可以实现各个IM之间的直接通讯,为了创建即时通讯的统一标准,目前已经出现过

iOS开发——网络编程OC篇&(十一)ASI了解

ASI了解 关于AFI网络框架早在2011年就已经停止更新了,现在基本上没有公司在使用,除非一些大的公司会保留一些项目在使用,所以以后我吗一般都不会接触到活着使用这个框架,但是作为一个开发者,正是因为他这么好,而且之前那么火,必须要了解或者知道一些基本的原理, 一.发送请求的2个对象1.发送GET请求:ASIHttpRequest 2.发送POST请求:ASIFormDataRequest* 设置参数// 同一个key只对应1个参数值,适用于普通“单值参数”- (void)setPostValu