网络请求

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);
        
    }];
    
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值