网络访问1

来源:互联网 发布:linux使用 编辑:程序博客网 时间:2024/05/01 05:59

一、获取URL地址

  • 确定要访问的资源路径

  • 常用方法:
    +URLWithString,使用指定的字符串实例化NSURL对象,注意URL不能保护空格、中文等特殊符号

NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/demo.json"];

二、 向服务器发送请求(NSURLRequest)
requestWithURL参数:

  • url:资源路径
  • cachePolicy:缓存策略
    1、NSURLRequestUseProtocolCachePolicy = 0, 默认缓存策略,会自动缓存
    2、NSURLRequestReloadIgnoringLocalCacheData = 1, 每次都从服务器去加载数据,忽略本地缓存
    3、NSURLRequestReturnCacheDataElseLoad = 2, 如果有缓存,就用缓存,没有就网上加载(使用wifi)
    4、NSURLRequestReturnCacheDataDontLoad = 3, 如有缓存,就用缓存,没有返回空(使用3g)
  • timeoutInterval:超时时间,默认60秒,一般设置15~20秒,超过这个时间以后,如果服务器仍无反应,则不继续等待
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:15];

三、将请求发送给服务器并获取响应
sendAsynchronousRequest异步参数:

  • request: 请求
  • queue:队列,销毁方法执行的队列
  • Handler:网络访问执行的代码块
  • response:服务器的响应
  • data:返回的二进制数据
  • connectionErrpr:连接服务器的时候出现错误,只要有网络访问,就可能会错误
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData * _Nullable data, NSError *connectionError) {        //网络请求完成后调用这块代码,从服务器获得二进制数据        //连接错误或者是数据错误        if(connectionError || data == nil){            NSLog(@"网络不通畅,请重新连接");            return;        }NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);    }];

四、 数据处理

  • 序列化及反序列化
  • 服务器返回客户端数据格式
    1、字符串
    2、JSON
    3、XML
    4、PList
    5、文件下载可以返回的任意格式
    6、图像
    7、zip等
0 0