一、网络请求的基础知识
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
二、具体请求示例
-
1、简单的请求一张图片并且显示出来(在这下载demo)
//
// ViewController.m
// RequestDemo
//
// Created by 王龙 on 16/3/27.
// Copyright © 2016年 Larry(Lawrence). All rights reserved.
//#import "ViewController.h" @interface ViewController ()<NSURLSessionDownloadDelegate> { 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,封装好了的请求类,在控制台查看相关数据。