标签:
数据请求总结
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 */
标签:
原文地址:http://www.cnblogs.com/iCocos/p/4553136.html