简单网络请求/GET请求/POST请求

#pragma mark -  简单网络请求
- (IBAction)simpleRequest:(id)sender {
    
    //1.构造URL
    NSURL *url = [NSURL URLWithString:@"http://news-at.zhihu.com/api/3/news/latest"];
    
    //2.构造Request
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    //3.构造Session
    NSURLSession *session = [NSURLSession sharedSession];
    
    
    //4.构造要执行的任务task
    /**
     *  task
     *
     *  @param data     返回的数据
     *  @param response 响应头
     *  @param error    错误信息
     *
     */
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        NSLog(@"response: %@", response);
        
        if (error == nil) {
            
            /*
            NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"data: %@", dataStr);
             */
            
            //json --> data  用JSON对象创建data

            //NSJSONSerialization *jsonData = [NSJSONSerialization dataWithJSONObject:<#(id)#> options:<#(NSJSONWritingOptions)#> error:<#(NSError *__autoreleasing *)#>]
            /*
             options:
             1.读取reading
             NSJSONReadingMutableContainers     生成可变的对象,不设置这个option,默认是创建不可变对象
             NSJSONReadingMutableLeaves     生成可变的字符串MutableString(iOS7+有bug)
             NSJSONReadingAllowFragments    允许json数据最外层不是字典或者数组
             2.写入writing
             NSJSONWritingPrettyPrinted     生成json数据是格式化的,有换行,可读性高
             */
            //data --> json  用data创建json
            NSJSONSerialization *jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
            NSLog(@"json: %@", jsonData);
            
            //JSONKit  开源框架
            
            
        } else {
            //处理相应的错误
        }
        
    }];
    
    
    //5.发送请求
    [task resume];
    
}

#pragma mark -  GET请求
- (IBAction)getRequest:(id)sender {
    
    //GET请求, 也可以给服务器发送信息, 也有参数(微博用户名,用户id)
    //1.构造URL, 参数直接拼接在url连接后
    NSURL *url = [NSURL URLWithString:@"http://news-at.zhihu.com/api/3/news/4602734"];
    
    //2.构造Request
    //把get请求的请求头保存在request里
    //NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    // 参数
    // (1)url
    // (2)缓存策略 
    // (3)超时的时间, 经过120秒之后就放弃这次请求
    //NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:120];
    //NSURLRequest 不可变,不能动态的添加请求头信息

    //可变的对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    //(1)设置请求方式
    [request setHTTPMethod:@"GET"];
    
    //(2)超时时间
    [request setTimeoutInterval:120];
    
    //(3)缓存策略
    [request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
    
    //(4)设置请求头其他内容
    //[request setValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>];
    //[request addValue:<#(NSString *)#> forHTTPHeaderField:<#(NSString *)#>];
    //[request setAllHTTPHeaderFields:<#(NSDictionary *)#>];
    
    [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];   //告诉服务,返回的数据需要压缩
    
    //3.构造Session
    NSURLSession *session = [NSURLSession sharedSession];

    //4.Task
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        
        if (error == nil) {
            NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"data: %@", dataStr);
        }
    }];
    
    //5.
    [task resume];
}

#pragma mark -  POST请求
- (IBAction)postRequest:(id)sender {
    
    //POST请求
    //1.构造URL
    NSURL *url = [NSURL URLWithString:@"https://api.weibo.com/2/statuses/update.json"];
    
    //2.构造Request
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    //(1)设置为POST请求
    [request setHTTPMethod:@"POST"];
    
    //(2)超时
    [request setTimeoutInterval:60];
    
    //(3)设置请求头
    //[request setAllHTTPHeaderFields:nil];
    
    //(4)设置请求体
    //发微博
    //请求体里需要包含至少两个参数
    //access_token  指定用户的令牌(这个以后会讲) 
    //status 微博正文

    NSString *bodyStr = @"access_token=XXXXX&status=我们想要发送的内容";
    NSData *bodyData = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:bodyData];
    
    
    
    //3.构造Session
    NSURLSession *session = [NSURLSession sharedSession];
    
    //4.task
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        NSLog(@"response : %@", response);
    }];
    
    //5.
    [task resume];
    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值