您的位置:首页 > 其它

CYC- 数据解析2

2015-09-28 12:07 204 查看
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(@"完成请求, 此时可以进行数据解析");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 安全