CYC- 数据解析2

GET 与 POST 区别
1. get请求 请求的网址 全部明文显示 安全性不高
2. get请求 请求的网址 有字符数的限制 大概255个
3. post 请求 请求的网址 不光是有一个请求的网址 还可以携带 请求体 这个请求体 是以NSData形式携带 NSDATA(以二进制形式存在) 安全性较高
4. post请求 网址没有字符数限制

一般公司都使用 post请求

#import "SecondViewController.h"

@interface SecondViewController ()<NSURLConnectionDataDelegate, NSURLConnectionDelegate>
// 声明一个可变data 进行异步请求接收数据
@property (nonatomic, retain) NSMutableData *data;

// 声明属性 再界面被消毁的时候 用于终止网络请求
@property (nonatomic ,retain) NSURLConnection *connection;

@end

@implementation SecondViewController
- (void)dealloc
{
    [_connection release];
    [_data release];
    [_connection cancel];
    [super dealloc];
}
- (void)viewDidLoad {


    [self addBarButtonItme];
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}
- (void)addBarButtonItme
{
    UIBarButtonItem *leftButton = [[ UIBarButtonItem alloc] initWithTitle:@"Post同步" style:(UIBarButtonItemStylePlain) target:self action:@selector(actionLeft:)];
    self.navigationItem.leftBarButtonItem = leftButton;
    [leftButton release];

    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"Post异步" style:(UIBarButtonItemStylePlain) target:self action:@selector(actionRight:)];
    self.navigationItem.rightBarButtonItem = rightButton;
    [rightButton release];
}
#pragma mark - Post同步请求
- (void)actionLeft:(UIBarButtonItem *)leftButton
{
    // 创建 网址对象
    NSURL *url = [NSURL URLWithString:kNewsListURL];

    // 利用网址对象 创建一个请求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:30.0];

    // 设置请求类型
    [request setHTTPMethod:@"POST"];

    // 注意:给这个请求 携带一个请求体
    // 构建一个请求体 NSData类型
    NSData *pramData = [kNewsListParam dataUsingEncoding:NSUTF8StringEncoding];

    // 携带到 请求当中
    [request setHTTPBody:pramData];
    // 利用这个请求 创建一个链接 并得到返回的数据
    NSURLResponse *response = nil;
    NSError *error = nil;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

    NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingMutableContainers) error:nil];
    NSLog(@"%@", dataDic);


}
- (void)actionRight:(UIBarButtonItem *)rightButton
{
    // 利用网址字符串 创建网址对象
    NSURL *url = [NSURL URLWithString:kNewsListURL];
    // 利用网址对象 创建请求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0];
    // 设置请求的类型
    [request setHTTPMethod:@"POST"];
    // 给这个请求 携带请求体
    NSData *paramData = [kNewsListParam dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:paramData];

    /*
    // 利用Block方法 完成异步请求

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

        // data 就是异步请求完成的数据 解析就行
        // 解析数据

        NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"%@", dataDic);

        // 剥香蕉
    }];

    */

    // 利用请求 创建链接 利用代理方法 实现异步请求数据
    self.connection = [NSURLConnection connectionWithRequest:request delegate:self];
    [self.connection start];

}

#pragma mark - 代理方法实现
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"请求失败,错误信息");
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    self.data = [NSMutableData data];
    NSLog(@"返回服务器信息, 证明链接成功了");
}


- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // 拼接
    [self.data appendData:data];

    NSLog(@"每次返回一点数据 多次执行");
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:(self.data) options:(NSJSONReadingMutableContainers) error:nil];
    NSLog(@"%@", dataDic);
    NSLog(@"完成请求, 此时可以进行数据解析");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值