[NSURLConnection]分别用Post和Get方式获取网络数据并把数据显示到表格

@interface ViewController ()<UITableViewDataSource,UITableViewDelegate>
{
    UIButton* getButton;
    UIButton* postButton;
    UITableView* table;
    NSMutableArray* array;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    getButton=[[UIButton alloc]initWithFrame:CGRectMake(30, 500, 100, 40)];
    getButton.backgroundColor=[UIColor orangeColor];
    [getButton setTitle:@"GET" forState:UIControlStateNormal];
    [getButton addTarget:self action:@selector(getData) forControlEvents:UIControlEventTouchUpInside];
    
    postButton=[[UIButton alloc]initWithFrame:CGRectMake(150, 500, 100, 40)];
    postButton.backgroundColor=[UIColor orangeColor];
    [postButton setTitle:@"POST" forState:UIControlStateNormal];
    [postButton addTarget:self action:@selector(postData) forControlEvents:UIControlEventTouchUpInside];
    
    table=[[UITableView alloc]initWithFrame:CGRectMake(0, 20, 320, 568-20) style:UITableViewStylePlain];
    table.dataSource=self;
    table.delegate=self;
    [self.view addSubview:table];
    [self.view addSubview:getButton];
    [self.view addSubview:postButton];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
{
    return array.count;
}

#pragma mark 表示每一行显示什么数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    //内存优化
    static NSString * identity=@"cell";
    //tableview 根据标识复制出一个cell
    UITableViewCell * cell=[tableView dequeueReusableCellWithIdentifier:identity];
    if (cell==nil) {
        cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identity];
    }
    NSDictionary* dic=array[indexPath.row];
    cell.textLabel.text=[dic valueForKey:@"title"];
    cell.detailTextLabel.text=[dic valueForKey:@"type"];
    cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
    return  cell;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)getData
{
    NSLog(@"get");
    //异步请求
    //创建NSString用来存储请求的网址
    NSString* str=@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";
    //用UTF8String格式转换成NSURL
    NSURL* url=[NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    //创建请求
    NSURLRequest* request=[[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    //发送请求
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        if (data) {
            //处理数据
            NSDictionary* dic=[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
            array=[dic valueForKey:@"news"];
            [table reloadData];
        }
        if (connectionError) {
            NSLog(@"%@",[connectionError description]);
        }
    }];
}

-(void)postData
{
    NSLog(@"post");
    //异步请求
    //创建NSString用来存储请求的网址
    NSString* str=@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
    //用UTF8String格式转换成NSURL
    NSURL* url=[NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    //创建请求
    NSMutableURLRequest* request=[[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    [request setHTTPMethod:@"POST"];
    //设置参数
    NSString* where=@"date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";
    NSData* data=[where dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:data];
    //发送请求
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        if (data) {
            //处理数据
            NSDictionary* dic=[NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
            array=[dic valueForKey:@"news"];
            [table reloadData];
        }
        if (connectionError) {
            NSLog(@"%@",[connectionError description]);
        }
    }];
}

 

posted @ 2015-12-16 09:45  death3721  阅读(194)  评论(0编辑  收藏  举报