访问网络的基本概念 && foundation框架中访问网络的基本流程

访问网络的方式

同步请求:数据的请求过程是在主线程来执行的.网络数据加载需要一个实践过程,这样的话就回堵塞主线程.

异步请求:数据的请求过程在多线程来执行.

同步请求无法取消,异步请求过程中可以取消.同步请求无法监听加载进度,异步可以监听.



foundation框架 中访问网络的基本流程

构造NSURL实例(地址)

生产NSURLRequest请求

通过返回NSURLRespond实例和NSError实例分析结果

接受返回数据


NSURL释义与常用方法

NSURL实例包装了一个地址信息,可以是本地地址,也可以是远程地址

-常用方法

// 初始化URL实例

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"];


NSLog(@"Scheme: %@", [url scheme]);    //http  [skiːm]  n.阴谋;计划;方案

NSLog(@"Host: %@", [url host]);    // www.baidu.com    n.主人;主持人;主办方;大量;寄主;主机

NSLog(@"absoluteString: %@", [url absoluteString]);    //http://www.baidu.com:8080/search?id=1    n.绝对的事物

NSLog(@"relativePath: %@", [url relativePath]);    //search n.亲戚;[语]关系词

NSLog(@"Port: %@", [url port]);    //8080   n.港口

NSLog(@"Path: %@", [url path]);    //search

NSLog(@"Query: %@", [url query]);    //id=1   n.疑问;质问;疑问号



-------------NSURLRequest的使用-------------

NSURLRequest 包装了网络请求信息

NSURL *url = [NSURL URLWithString:@"http://www.baidu.com:8080/search?id=1"

// cachePolicy 缓存策略 timeoutInterval 超时时间     ['pɑːləsi] n.政策;方针  ['ɪntərvl]  n.间隔;休息时间;(数学)区间;(音乐)音程

NSURLRequest *request = [NSURLRequest requestWithURL:url

cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];


-------------NSMutableRequest的使用-------------

相对于 NSRequest,  NSMutableRequest实例可以对请求信息重新设置
NSMutableURLRequest *request [[ NSMutableURLRequest alloc] init];
[request setURL:url]  
[request setHTTPMethod:@"POST"]   //设置请求方式
[request setsetTimeoutInterval:60]  //设置请求时间
[request setHTTPBody:_data]  //设置请求参数
[request setValue:@"tttt" forHTTPHeaderField@"cookes"]  //设置请求头

同步请求用法

        //构造url

        NSURL *url =[NSURL URLWithString:@"http;//www.baidu.com"];

        //创建一个请求对象

        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        NSURLRequest *response;

        //发送同步请求,请求成功后返回数据

        NSData *resultData = [NSURLConnection sendSynchronousRequest:request

                                                   returningResponse:&response

                                                               error:nil];

        NSString *dataString = [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding];

        self.resulText.text = dataString;


        //异步请求

        //第一种方式

        NSURL *url = [NSURL URLWithString:request_url];

        NSURLRequest *request = [NSURLRequest requestWithURL:url];

        

        //发送异步请求

        [NSURLConnection connectionWithRequest:request delegate:self];

        -[(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{

            [_data appendData:data];

        }//接受加载的数据

          -(void)connectionDidFinishLoading;(NSURLConnection *)connection{

              NSString *dataString = [[NSString alloc] initWithData:_data

                                                           encoding:NSUTF8StringEncoding];

              self.resultText.text = dataString;

          } //数据加载完成以后调用

        //异步请求

        //第二种方式(开辟一个子线程)

        -[(IBAction)asychroRequest:(id)sender{

            [self performSelectorInBackground:@selector(loadData)

                                   withObject:nil];

        } //启动一个新的线程加载数据

          -(void)loadData {

              NSURL *url = [NSURL URLWithString:requestWithURL:url];

              NSURLRequest *request = [NSURLRequest requestWithURL:url];

              NSURLResponse *response =nil;

              //发送同步请求

              NSData *data = [NSURLConnection sendSynchronousRequest:request

                                                   returningResponse:&response

                                                               error:nil];

              NSString *srtingData = [[NSString alloc] initWithData:data

                                                           encoding:NSUTF8StringEncoding];

              

              [self preformSelectorOnMainThread:@selector(afterLoadData:)

                                     withobject:stringData waitUntiDone:NO];

          }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值