UI基础整理-17


网络解析




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

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值