iOS开发之网络数据请求

作者: IOS_龙 | 来源:发表于2016-03-27 12:58 被阅读1136次

一、网络请求的基础知识

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

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 ()<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,封装好了的请求类,在控制台查看相关数据。

相关文章

  • iOS开发YN组件之网络层

    iOS开发组件YNKit之网络数据请求 该组件由我和占宇同事共同开发的iOS开发高效的一个组件集,在快捷开发中提炼...

  • iOS开发之网络数据请求

    一、网络请求的基础知识 ios9: 重大改变(1)NSURLConnection:ios9之前使用,之后弃用NSU...

  • iOS开发·网络请求方法总结复习(下)

    iOS开发·网络请求方法总结复习(下) iOS开发·网络请求方法总结复习(下)

  • 2019-04-30

    iOS开发之网络数据解析(一)--JSON解析简介 原文链接:原文链接 前言:对服务器请求之后,返回给客户端的数据...

  • 网络数据请求自身心得

    今天来说说关于iOS开发过程中的网络数据请求。 现在常用的网络数据请求常见的有四种方式:同步GET,同步POST,...

  • IOS开发之网络数据解析(一)--JSON解析简介

    iOS开发之网络数据解析(一)--JSON解析简介 摘要: 前言:对服务器请求之后,返回给客户端的数据,一般都是J...

  • ios 开发中的网络数据请求

    今天来说说关于iOS开发过程中的网络数据请求。现在常用的网络数据请求常见的有四种方式:同步GET,同步POST,异...

  • 字典转模型

    2016.08.31更新 ios开发中网络请求,通常返回json数据,如果想使用数据就必须把json格式的数据转成...

  • iOS 模型动态映射

    iOS 开发中,一旦涉及到网络请求,那么数据模型就不可少,当然你也可以选择直接用网络请求的数据,通过获取key的方...

  • iOS 一行代码设置UITableView占位view(swif

    开发场景: iOS开发中常见的这么一种情形,UITableView显示网络请求的数据列表,在无网络或者服务器返回内...

网友评论

    本文标题:iOS开发之网络数据请求

    本文链接:https://www.haomeiwen.com/subject/ietjlttx.html