您的位置:首页 > 产品设计 > UI/UE

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: