GET请求
- (IBAction)buttonGETAction:(id)sender {
// GET 请求
// 网络连接
// 1,处理地址
// 地址里面不能带空格
NSString *str = @"http://cdn.gq.com.tw.s3-ap-northeast-1.amazonaws.com/userfiles/images_A1/6954/2011100658141857.jpg";
// 对地址进行一次编码
// 把地址中的汉字,特殊字符,转为UTF8编码
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:str];
// 2,创建一个请求
// 参数1: 网络请求的地址信息
// 参数2: 这次请求的缓存策略
// 参数3: 请求的超时时间
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
// 设置请求方式
request.HTTPMethod = @"GET";
// 3.链接服务器 获取数据
// 同步连接服务器 会卡死界面
// 参数1:创建好的请求
// 参数2:服务器的响应信息
// 参数3:错误信息
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSLog(@"服务器响应信息 %@", response);
NSLog(@"错误信息 %@", error);
// 将数据转为图片
UIImage *image = [UIImage imageWithData:data];
self.myImageView.image = image;
}
POST请求
- (IBAction)buttonPOStAction:(id)sender {
// POST请求
// 1.处理地址
NSString *str = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:str];
// 2.创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
// 指定请求方式
request.HTTPMethod = @"POST";
// 将要上传的数据转成NSData类型
NSString *bodyStr = @"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213";
NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
// 指定POST请求传输的数据(上传的表单/图片。。。)
request.HTTPBody = body;
// 3.链接服务器
NSURLResponse *response = nil;
NSError *error = nil;
NSData *resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
// NSLog(@"%@", response);
//
//
// NSString *resultStr = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];
//
// NSLog(@"%@", resultStr);
// 对数据进行解析
NSError *dicError = nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:resultData options:NSJSONReadingMutableContainers error:&dicError];
// NSLog(@"%@", dic);
}
异步请求
- (IBAction)asyncAction:(id)sender {
// 1.处理地址
NSString *str = @"http://api.douban.com/v2/movie/nowplaying?app_name=doubanmovie&client=e:iPhone4,1|y:iPhoneOS_6.1|s:mobile|f:doubanmovie_2|v:3.3.1|m:PP_market|udid:aa1b815b8a4d1e961347304e74b9f9593d95e1c5&alt=json&version=2&start=0&city=北京&apikey=0df993c66c0c636e29ecbb5344252a4a";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:str];
// 2.创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
request.HTTPMethod = @"GET";
// 3.链接服务器
// 异步连接服务器(使用代理方式)
[NSURLConnection connectionWithRequest:request delegate:self];
}
#pragma mark - 网络请求的协议方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
// 收到服务器响应信息
NSLog(@"响应信息:%@", response);
// 每当接收到服务器的相应信息之后,就初始化receiveData属性
self.receiveData = [NSMutableData data];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"接收数据");
// 把服务器发送过来的一段段的数据拼接起来
[self.receiveData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"加载数据结束");
// 在这个方法中进行对数据的处理
NSError *error = nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:self.receiveData options:NSJSONReadingMutableContainers error:&error];
}
Block请求
- (IBAction)asyncBlockAction:(id)sender {
// 1. 处理地址
NSString *str = @"http://api.douban.com/v2/movie/nowplaying?app_name=doubanmovie&client=e:iPhone4,1|y:iPhoneOS_6.1|s:mobile|f:doubanmovie_2|v:3.3.1|m:PP_market|udid:aa1b815b8a4d1e961347304e74b9f9593d95e1c5&alt=json&version=2&start=0&city=北京&apikey=0df993c66c0c636e29ecbb5344252a4a";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:str];
// 2. 创建请求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
request.HTTPMethod = @"GET";
// 3. 连接服务器(异步Block方法)
// 参数1 :请求
// 参数2 :操作队列 网络请求结束之后返回到哪个线程
// 参数3 :当网络请求结束之后,会执行block中的代码
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
// 对数据进行处理 刷新视图(reloadData),给各种label赋值
NSError *error = nil;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
NSLog(@"%@", dic);
}];
}