UI基础整理-17
2016-01-22 20:26
302 查看
网络解析
get和post不同点:
1.给服务器传输数据的方式
GET : 通过网址字符串
POST : 通过data
2.传输数据的大小
GET : 网址字符串最多255字节
POST : 使用NSData,容量超过1G(最大支持8EB)
3.安全性
GET : 所有传输给服务器的数据,显示在网址里,类似于密码的明文输入,直接可见.
POST:数据被转成NSData(⼆进制数据),类似于密码的密⽂输入,无法直接读取。
同步(单线程) 类似于串行
异步(多线程) 类似于并行 --->通常用的是异步
异步: 代理 Block
//需要记住的解析方式
GET 记住新的Block异步解析方式
POST 记住新的Block异步解析方式
URL -> GET -> NEW Block异步 -> Json -> Foundation
//NSURLSessionDataDelegate代理方法
//NSURLSession提供了block方式处理返回数据的简便方式,但如果想要在接收数据过程中做进一步的处理,仍然可以调用相关的协议方法.NSURLSession的代理方法和NSURLConnection有些类似,都是分为接收响应、接收数据、请求完成几个阶段.
//使用代理方法我们需要设置代理,但是session得delegate属性是只读的,要想设置代理只能通过这种方式创建session
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
//创建任务(因为要使用代理方法,就不需要block方式初始化)
NSURLSessionDataTask *task = [session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=15&udid=1234567890&terminalType=Iphone&cid=213"]]];
//启动任务
[task resume];
//1.接收服务器响应
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler
{
//允许处理服务器的响应,才会继续接收服务器返回的数据 completionHandler(NSURLSessionResponseAllow);
//当网络请求是基于http协议时(url以http开头),response本质为NSHTTPURLResponse类型
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
//创建空的可变的data,准备接收服务器传回的data片段
self.receiveData = [NSMutableData dataWithCapacity:40];
}
//2.接收服务器数据(可能多次,手动拼接数据)
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
{
//处理每次接收到的数据
//将每次接收到的data片段,拼接到receiveData中
[_receiveData appendData:data];
}
//3.请求结果(失败后Error对象被赋值错误信息)
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
//请求完成,成功或者失败的处理
NSString *result = [[NSString alloc] initWithData:_receiveData encoding:NSUTF8StringEncoding];
NSLog(@"result = %@",result);
}
get和post不同点:
1.给服务器传输数据的方式
GET : 通过网址字符串
POST : 通过data
2.传输数据的大小
GET : 网址字符串最多255字节
POST : 使用NSData,容量超过1G(最大支持8EB)
3.安全性
GET : 所有传输给服务器的数据,显示在网址里,类似于密码的明文输入,直接可见.
POST:数据被转成NSData(⼆进制数据),类似于密码的密⽂输入,无法直接读取。
同步(单线程) 类似于串行
异步(多线程) 类似于并行 --->通常用的是异步
异步: 代理 Block
//需要记住的解析方式
GET 记住新的Block异步解析方式
POST 记住新的Block异步解析方式
URL -> GET -> NEW Block异步 -> Json -> Foundation
//NSURLSessionDataDelegate代理方法
//NSURLSession提供了block方式处理返回数据的简便方式,但如果想要在接收数据过程中做进一步的处理,仍然可以调用相关的协议方法.NSURLSession的代理方法和NSURLConnection有些类似,都是分为接收响应、接收数据、请求完成几个阶段.
//使用代理方法我们需要设置代理,但是session得delegate属性是只读的,要想设置代理只能通过这种方式创建session
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
//创建任务(因为要使用代理方法,就不需要block方式初始化)
NSURLSessionDataTask *task = [session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=15&udid=1234567890&terminalType=Iphone&cid=213"]]];
//启动任务
[task resume];
//1.接收服务器响应
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler
{
//允许处理服务器的响应,才会继续接收服务器返回的数据 completionHandler(NSURLSessionResponseAllow);
//当网络请求是基于http协议时(url以http开头),response本质为NSHTTPURLResponse类型
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
//创建空的可变的data,准备接收服务器传回的data片段
self.receiveData = [NSMutableData dataWithCapacity:40];
}
//2.接收服务器数据(可能多次,手动拼接数据)
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
{
//处理每次接收到的数据
//将每次接收到的data片段,拼接到receiveData中
[_receiveData appendData:data];
}
//3.请求结果(失败后Error对象被赋值错误信息)
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
//请求完成,成功或者失败的处理
NSString *result = [[NSString alloc] initWithData:_receiveData encoding:NSUTF8StringEncoding];
NSLog(@"result = %@",result);
}
相关文章推荐
- UI基础整理-16
- 【String、StringBuffer和StringBuilders】
- UI基础整理-15
- UI基础整理-14
- hdu 1242 Rescue
- Android应用UI设计流程
- Android应用UI设计流程
- Android应用UI设计流程
- UI基础整理-13
- LeetCode: Unique Binary Search Trees [095]
- golang为LigerUI编写简易版本web服务器
- UI基础整理-12
- iOS-分组UITableView删除崩溃问题(当删除section中最后一条数据崩溃的情况)
- UI基础整理-11
- UIIAlertController的自动消失
- 【ITOO】---easyUI的Combobox实现级联查询
- UIMenuController的使用
- LightOJ1382 The Queue(树形DP)
- UITabBarController 在storyboard的实现
- requests有关cookie的使用