CYC- 数据解析2

来源:互联网 发布:网络匿名性的缺点 编辑:程序博客网 时间:2024/06/05 15:11

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
原创粉丝点击