异步POST请求及加载信息到UitabView上


有一个New类,有三个属性name(title),summary和newsUrl;JSON解析的是一个字典套数组套字典的形式。


{
    "news": [
        {
            "rownum": 1, 
            "id": "B664817CFB08FCE", 
            "title": "京郊避暑游达到峰值  周末农家客栈不预定住不上", 
            "type": "北京新闻", 
            "cid": "213", 
            "cname": "北京新闻", 
            "newsUrl": "http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/Site_PV_Count.ashx?newsId=B664817CFB08FCE&createDate=20140727&PID=213&UpdateTime=1406459313", 
            "typeId": "01", 
            "sequence": 1, 
            "attribute": 0, 
            "lastUpdateTime": "1406459313", 
            "PUBLISHDATE": "20140727", 
            "picUrl": "http://ipad-bjwb.bjd.com.cn/DigitalPublication/MediaLibrary/20140727/B664817CFB08FCE/80755750BBA178D8.jpg", 
            "summary": " 2014年7月27日  北京 进入三伏天,北京周边的河畔和山谷就成了许多市民周末纳凉的去处。这个周末,高达35℃的天气又将不少城里人“赶”到京郊去,不少出京路段甚至出现了拥堵。昨天一大早,京承路往密云、怀柔去的方向就从四环一直堵到了六环,这其中,不少是到京郊纳凉避暑的市民。“我们8点出发,本以为不晚,谁知道已经开始堵了。”昨天市民刘先生带着全家老少出行,在京承路足足堵了两个多小时,车行缓慢。“现在订房得排到8月底了”雾灵山脚下的新城子村宋晓梅家的农家客栈住宿已经爆满,这里既有市民全家出游,也有不少企业组织员工到京郊避暑。由于人多,客栈厨师人手短缺,已经从村里临时借了两个厨工帮忙。院主告诉记者,进入暑期已经不分周末还是工作日了,几乎天天客满,周六、日人更多,如果不提前预定,这一带都找不到住宿。“今年水量并不大,可是游客还是比预计的要多。”京北第一漂景区昨天一天就涌进了2000多游客。虽然今年的水量很少,并不是玩漂流最好的时候,但还是有不少游客愿意到水中嬉戏。“山里的温度平均比城里低5℃,早晚更凉快,住在这里晚上还要盖薄被。”延庆珍珠泉村的农家院昨天也全部挤满了城里避暑的市民,有不少市", 
            "commentCount": 0
        }, 


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {

        // Custom initialization

        

        

        self.arr = [NSMutableArray array];

        

        // 1. 建立请求

        

        // 获取文件路径

        NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"];

        

        // 建立请求对象

        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

        

        // 设定请求的方式

        request.HTTPMethod = @"POST";

        

        // 设定POST请求的Body

        

        // 需要提交的表单

        NSString *bodyStr = @"date=20131129&startRecord=1&len=30&udid=1234567890&terminalType=Iphone&cid=213";

        

        // bodyStr转为NSData

        NSData *bodyData = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];

        

        // 设置请求的bodyNSData类型)

        request.HTTPBody = bodyData;

        

        

        

        // 2.异步连接服务器 Block回调

        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

            

            // 将结果转为字符串

            NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

            NSLog(@"-----%@", result);

            

            NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

            

            NSMutableArray *array = [dic objectForKey:@"news"];

            // 遍历数组

            for (NSDictionary *dictionary in array) {

                News *new = [[News alloc] initWithNSDictionary:dictionary];

                [self.arr addObject:new];

                // 重新加载数据

                [self.tableView reloadData];

                [new release];

            }

        }];

        

    }

    return self;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];

    self.tableView.separatorColor = [UIColor purpleColor];

    self.tableView.delegate = self;

    self.tableView.dataSource = self;

    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"1"];

    [self.view addSubview:self.tableView];

    [_tableView release];

}


// New类对象的个数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return [self.arr count];

}


// cell里的内容为title

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"1"];

    cell.textLabel.text = [[self.arr objectAtIndex:indexPath.row] name];

    return cell;

}


// 推出下一个页面,将New类对象传过去

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    SecondViewController *second = [[SecondViewController alloc] init];

    second.newObject = [self.arr objectAtIndex:indexPath.row];

    [self.navigationController pushViewController:second animated:YES];

    [second release];

}




secondViewController.m

- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    

    

    // 接收MainViewController传来的New对象

    UITextView *textView = [[UITextView alloc] initWithFrame:self.view.bounds];

    textView.text = self.newObject.summary;

    textView.editable = NO;

    [self.view addSubview:textView];

    [textView release];

    

    // webView的显示

    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 320, 320, 160)];

    // 路径是newsUrl 是一个字符串, 将它进行加载

    NSURL *url = [NSURL URLWithString:self.newObject.newsUrl];

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];

    // 加载请求

    [webView loadRequest:request];

    [self.view addSubview:webView];

    [webView release];

}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值