iOS开发之网络数据请求

一、网络请求的基础知识

ios9: 重大改变
(1)
NSURLConnection:ios9之前使用,之后弃用
NSURLSession ios7.0之后出来 ios9只能使用这个类
(2)后台服务器传输协议由HTTP改成HTTPS(都是超文本传输协议)
HTTP:Hypertext Transfer Protocol
https:Hyper Text Transfer Protocol over Secure Socket
Layer
区别: https比http多了 安全套接字层 更安全都是超文本传输协议
(3)常用的请求方法
① get 数据写在URL后面
浏览器和服务器对URl长度有限制,因此在URL后面附带的参数是有限制的
② post
默认是get
(4) 一个URL加载的请求 NSURLRequest
NSURLRequest子类为NSMutableURLRequest 可以添加请求体 请求头 请求体就是body数据 请求头是格式
(5)注意在info.plist中添加 否则无法请求数据
info.plist -> App Transport Security Settings -> Allow Arbitrary Loads -> YES

iOS开发之网络数据请求_第1张图片
294876DA-23BC-4B30-B2F0-5FA6E69603A0.png

二、具体请求示例

  • 1、简单的请求一张图片并且显示出来(在这下载demo)
    //
    // ViewController.m
    // RequestDemo
    //
    // Created by 王龙 on 16/3/27.
    // Copyright © 2016年 Larry(Lawrence). All rights reserved.
    //

      #import "ViewController.h"
    
     @interface ViewController ()
     {
         UIImageView *myView;
     }
     @end
    
     @implementation ViewController
    
     - (void)viewDidLoad {
       [super viewDidLoad];
       self.view.backgroundColor = [UIColor greenColor];
       /*  下载步骤
        1、URL
        2、request
        3、session
        4、下载任务 -> 挂上代理 -> 下载的内容在代理方法中得到
        5、开启任务
    
        */
        //    1、URL
       NSURL *url1 = [NSURL URLWithString:@"http://img.pconline.com.cn/images/upload/upc/tx/wallpaper/1206/18/c0/12043463_1339987116999.jpg"];
     //    2、request
       NSURLRequest *requ = [NSURLRequest requestWithURL:url1];
     //    3、session对象
       NSURLSession *session1 = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
    
     //    4、下载任务
       NSURLSessionDownloadTask *download = [session1      downloadTaskWithRequest:requ];
    
     //    5、开启任务
       [download resume];
     //    初始化图片视图来显示请求下来的图片  注意需要等待一会才可以请求下来
       myView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, CGRectGetWidth([UIScreen mainScreen].bounds), CGRectGetHeight([UIScreen mainScreen].bounds))];
       myView.backgroundColor = [UIColor cyanColor];
       myView.contentMode = UIViewContentModeScaleAspectFit;
       [self.view addSubview:myView];
    
          }
    
    - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
     didFinishDownloadingToURL:(NSURL *)location{
    
    //    NSFileManager 用于文件操作的类
    //    创建文件操作的对象 -> 单例 -> defaultManager
     NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:downloadTask.response.suggestedFilename];
    
    //     移动URL路径的方法
     [[NSFileManager defaultManager] moveItemAtURL:location toURL:[NSURL fileURLWithPath:path] error:nil] ;
     //    输出路径  鼠标点击桌面后 commend+shift+G把这个路径拷贝过去可以查看下载下来的图片
     NSLog(@"%@",path);
    myView.image = [UIImage imageWithContentsOfFile:path];
    
    //    NSLog(@"%@",location);
    
    }
    @end
    
  • 2.在这给出具体的一个请求网络数据的实例,在这个demo中封装了请求数据的方法,并且以请求天气预报数据为例,输入对应的城市拼音在控制台输出天气相关参数请在这下载具体的demo,封装好了的请求类,在控制台查看相关数据。

你可能感兴趣的:(iOS开发之网络数据请求)