OC-获取网络资源的一些方式

来源:互联网 发布:java二级考试视频 编辑:程序博客网 时间:2024/06/15 00:36

在storyboard里创建4个按钮一个TEXT,分别是同步GET,异步GET,同步POST,异步POST

思路:GET方法,通过微博的API接口,获取微博的数据,并对数据进行解析并显示需求的数据在模拟器上

同步GET

1、根据得到的数据的格式,新建一个Model类,用于解析需求
这里写图片描述
实现Model类的方法
这里写图片描述

2、使用同步的方式得到数据

- (IBAction)synchronizeGet:(UIButton *)sender {    //NSLog(@"同步GET");    NSString *urlString=@"https://api.weibo.com/2/statuses/public_timeline.json?access_token=2.00mHP1iFy3UdOB074129558f0_kqZ2";    //对字符串进行编码    urlString=[urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];     NSURL *url=[NSURL URLWithString:urlString];    //使用urlconnection类 与服务器连接,这个是同步的过程,    //创建一个URL请求,参数1:请求地址;参数2:缓存策略 ;参数3:请求超时计时    NSURLRequest *request=[NSURLRequest requestWithURL:url cachePolicy: NSURLRequestUseProtocolCachePolicy  timeoutInterval:60];    NSURLResponse *response;    NSError *error;    NSData *data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];    //JSON数据格式解析,利用系统提供的API进行JSON数据解析    NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];    WeiboModel *model=[[WeiboModel alloc]initWithDictionary:dic];    NSString *text=[model.statuses[0] objectForKey:@"text"];    self.textView.text=text;

异步GET

- (IBAction)asynchronismGET:(UIButton *)sender {    NSLog(@"异步GET");    NSString *urlString=@"https://api.weibo.com/2/statuses/public_timeline.json?access_token=2.00mHP1iFy3UdOB074129558f0_kqZ2";    //编码    NSString *urlSting=[urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];    NSURL *url=[NSURL URLWithString:urlSting];    NSURLRequest *request=[NSURLRequest requestWithURL:url cachePolicy: NSURLRequestUseProtocolCachePolicy  timeoutInterval:60];    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {    NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];    WeiboModel *model=[[WeiboModel alloc]initWithDictionary:dic];    NSString *text=[model.statuses[0] objectForKey:@"text"];    dispatch_async(dispatch_get_main_queue(), ^{            self.textView.text=text;        });    }];

同步POST

- (IBAction)synchronizePost:(UIButton *)sender {    NSString *urlString=@"https://api.weibo.com/2/statuses/update.json";    urlString=[urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];    NSURL *url=[NSURL URLWithString:urlString];    //POST:设置它的方法体    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:60];    NSString *bodyString=@"status=O_O &access_token=2.00mHP1iFy3UdOB074129558f0_kqZ2";    NSData *data=[bodyString dataUsingEncoding:NSUTF8StringEncoding];    [request setHTTPMethod:@"POST"];    [request setHTTPBody:data];    NSData *resultData=[NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];    NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:resultData options:NSJSONReadingAllowFragments error:nil];    NSLog(@"%@",dic);    }

异步POST

- (IBAction)asynchronismPost:(UIButton *)sender {    NSString *urlString=@"https://api.weibo.com/2/statuses/update.json";    urlString=[urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];    NSURL *url=[NSURL URLWithString:urlString];    NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:60];    NSString *bodyString=@"status=O_O &access_token=2.00mHP1iFy3UdOB074129558f0_kqZ2";    NSData *data=[bodyString dataUsingEncoding:NSUTF8StringEncoding];    [request setHTTPMethod:@"POST"];    [request setHTTPBody:data];    connectionPost=[NSURLConnection connectionWithRequest:request delegate:self ];
0 0
原创粉丝点击