URL:就是资源的地址、位置,每一个互联网资源都有一个唯一的URL。
HTTP协议:Hyper Text Transfer Protocol(超文本传输协议),http是一个应用层的协议,由请求和响应构成,是一个标准的客户端服务器模型。
- 两种请求方式:
GET
POST
l两种请求方式的比较
相同点:都能给服务器传输数据。
不同点:
1、给服务器传输数据的方式不同:
GET:通过网址字符串
POST:通过data
2、传输数据的大小:
GET:网址字符串最多255字节
POST:使用NSData,容量超过1G
3、安全性:
GET:所有传输给服务器的数据,显示在网址里,类似于密码的铭文输入,可以直接读取
POST:数据被转为NSData(二进制数据),类似于密码的密文输入,无法直接读取
//get 同步
- (void)getAndSynchionous {
//创建网址
NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20151031&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"];
//创建请求体
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//发送请求,连接服务器
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}
//session get请求(block)
- (void)sessionAndGet {
//创建网址和session对象
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20151031&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"];
//通过URL初始化tast 在block内部可以直接返回对数据的处理
NSURLSessionDataTask *dast = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}];
[dast resume];
}
//post 请求
- (void)sessionAndPost {
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"];
//穿件请求体
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"date=20151031&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" dataUsingEncoding:NSUTF8StringEncoding];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
}];
[task resume];
}
总结
- 网络请求的步骤:1、NSURL;2、NSURLResquest;3、NSURLConnection;4、处理Error或者返回数据。
- NSURLSession是iOS7中新的网络处理方式,NSURLConnection在iOS较早的版本中使用广泛。