IOS之同步请求、异步请求、GET请求、POST请求

2023-11-12

1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,

2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行

3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性不高,地址最多255字节;

4、POST请求,将参数放到body里面。POST请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在body里面,不易被捕获。


1、     同步GET请求

    //第一步,创建URL

    NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];

    

    //第二步,通过URL创建网络请求

    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    //NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)

      其中缓存协议是个枚举类型包含:

      NSURLRequestUseProtocolCachePolicy(基础策略)

      NSURLRequestReloadIgnoringLocalCacheData(忽略本地缓存)

      NSURLRequestReturnCacheDataElseLoad(首先使用缓存,如果没有本地缓存,才从原地址下载)

      NSURLRequestReturnCacheDataDontLoad(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)

      NSURLRequestReloadIgnoringLocalAndRemoteCacheData(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)

      NSURLRequestReloadRevalidatingCacheData(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)

    //第三步,连接服务器

    NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    

    NSString *str = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];

    

    NSLog(@"%@",str);


2、同步POST请求

    //第一步,创建URL

    NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];

    //第二步,创建请求

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    [request setHTTPMethod:@"POST"];//设置请求方式为POST,默认为GET

    NSString *str = @"type=focus-c";//设置参数

    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    [request setHTTPBody:data];

    //第三步,连接服务器

    

    NSData *received = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

    

    NSString *str1 = [[NSString alloc]initWithData:received encoding:NSUTF8StringEncoding];

    

    NSLog(@"%@",str1);

3、异步GET请求

    //第一步,创建url

    NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];

    //第二步,创建请求

    NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    //第三步,连接服务器

    NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];

4、异步POST请求

    //第一步,创建url

    NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do"];

    //第二步,创建请求

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];

    [request setHTTPMethod:@"POST"];

    NSString *str = @"type=focus-c";

    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    [request setHTTPBody:data];

    //第三步,连接服务器

    NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:self];



5、异步请求的代理方法

//接收到服务器回应的时候调用此方法

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

    NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;

    NSLog(@"%@",[res allHeaderFields]);

    self.receiveData = [NSMutableData data];

  


                              

}

//接收到服务器传输数据的时候调用,此方法根据数据大小执行若干次

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

{

    [self.receiveData appendData:data];

}

//数据传完之后调用此方法

-(void)connectionDidFinishLoading:(NSURLConnection *)connection

{

    NSString *receiveStr = [[NSString alloc]initWithData:self.receiveData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",receiveStr);

}

//网络请求过程中,出现任何错误(断网,连接超时等)会进入此方法

-(void)connection:(NSURLConnection *)connection

 didFailWithError:(NSError *)error

{

    NSLog(@"%@",[error localizedDescription]);

}





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IOS之同步请求、异步请求、GET请求、POST请求 的相关文章

  • 色值的封装方法以及RGB和RGBA的区别

    取色值相关的方法 define RGB r g b UIColor colorWithRed r 255 f green g 255 f blue b 255 f alpha 1 f define RGBA r g b a UIColor
  • 堆栈与队列的区别

    队列只能在队头做删除操作 在队尾做插入操作 而栈只能在栈顶做插入和删除操作 栈就是一个桶 后放进去的先拿出来 它下面本来有的东西要等它出来之后才能出来 堆是在程序运行时 而不是在程序编译时 申请某个大小的内存空间 即动态分配内存 对其访问和
  • iOS 开发者账号添加手机号码 Program License Agreement has been updated.edit phone number

    苹果开发者账号经常性的更新一些开发协议让开发者同意 苹果爸爸的要求 同意就好了 只有Agent权限账号会收到 团队成员账号权限区别请参考 最近苹果开发者账号又更新了协议 apple id没有绑定手机号的 在开发者账号里会要求你必须绑定手机号
  • (八)BaseTableView的简单使用

    BaseTableView的简单使用 现在来说说另一个我封装比较重的UI组件 这个组件要实现什么效果呢 当你使用继承了BaseTableView的子类tableView后 只需要在使用这个类的控制器中传递给tableView一个数据数组 并
  • AVRoutePickerView 和 MPVolumeView 投屏

    最近小萌的项目有投屏的需求 开始使用的是保利威的SDK 但是保利威的SDK不管iOS或者Android都是只支持乐播投屏 但是我们项目的需求是AirPlay投屏 在我查找很多资料的过程中发现AVRoutePickerView和MPVolum
  • weak和assign的区别-正确使用weak、assign

    一 区别 1 修饰变量类型的区别 weak 只可以修饰对象 如果修饰基本数据类型 编译器会报错 Property with weak attribute must be of object type assign 可修饰对象 和基本数据类型
  • iOS 佛祖保佑,永无bug等有意思的注释

    复制 ooOoo o8888888o 88 88 O O
  • UIImagePickerController iOS11调起相册 中的照片被导航栏遮挡

    为了适配iOS11下来刷新下下偏移问题 全局设置了 UIScrollView appearance 的ContentInsetAdjustmentBehavior为UIScrollViewContentInsetAdjustmentNeve
  • xcode 第三方库 Incompatible block pointer types sending

    Incompatible block pointer types sending void PINMemoryCache strong NSString strong strong id to parameter of type PINCa
  • swift 类型判断 Dictory Array

    一 类型的判断 1 is 的介绍 Swift 中类型的判断的关键词是 is is操作用来判断某一个对象是否是某一个特定的类 它会返回一个bool类型的值 2 is的使用方法 1 gt is 的一般判断 Swift 系统也会自动判断 类型的一
  • 隐藏导航条底部的黑线(shadowImage)四种办法

    方法一 当设置navigationBar的背景图片时移除黑线的方法 该方法会使translucent属性失效 objc view plain copy 方法一 当设置navigationBar的背景图片时移除黑线的方法 该方法会使trans
  • OC_YYModel字典转模型的几种详细用法

    OC YYModel字典转模型的几种详细用法 目录 JSON转字符串 普通字典转模型 模型属性有自定义的模型YYUSer 属性有数组 数组里自定义模型 还有字典和集合 字典里的key与模型里的属性名不一致 常用的几个方法 json转模型 i
  • NSLog效率低下的原因以及NSLog宏定义

    我是前言 打Log是我们debug时最简单朴素的方法 NSLog 对于objc开发就像 printf 对于c一样重要 但在使用 NSLog 打印大量Log 尤其是在游戏开发时 如每一帧都打印数据 NSLog 会明显的拖慢程序的运行速度 游戏
  • 容器类对象:枚举 NSEnumerator、字典

    一 枚举 NSEnumerator 依附于集合类 NSArray NSSet NSDictionary 没有用来创建实例的接口 NSEnumerator的nextObject方法可以遍历每个集合元素 结束返回nil 通过与while结合使用
  • IOS之同步请求、异步请求、GET请求、POST请求

    1 同步请求可以从因特网请求数据 一旦发送同步请求 程序将停止用户交互 直至服务器返回数据完成 才可以进行下一步操作 2 异步请求不会阻塞主线程 而会建立一个新的线程来操作 用户发出异步请求后 依然可以对UI进行操作 程序可以继续运行 3
  • Objective-C中的继承与多态, Category, Extension

    1 继承与多态 先要理解实例变量的作用域 再看继承 即 子类的方法和属性 从父类继承得到的方法和属性 子类新增的方法和属性 例子 Person h import
  • iOS“断点”(Break Point)你不知道多强大

    iOS 断点 Break Point 你不知道多强大 转载自http mp weixin qq com s biz MzA4ODk0NjY4NA mid 230272985 idx 1 sn 045c98bfb2d8dd1ecf7a7321
  • 简述多线程的作用以及什么地方用到多线程

    1 多线程的作用 可以解决负载均衡问题 充分利用CPU的资源 为了提高Cpu的使用 采用多线程的方法去同时完成几件事情而互不干扰 2 大多数的情况下 使用多线程 主要是需要处理大量的IO操作或处理的情况需要花大量的时间等 3 iOS 有三种
  • iOS中堆和栈的使用(Swift)

    堆和栈都是一种数据项按序排列的数据结构 只能在一端 称为栈顶 top 对数据项进行插入和删除 堆 队列优先 先进先出 FIFO first in first out 栈 先进后出 FILO First In Last Out 堆栈空间分配
  • iOS开发之状态栏statusBar颜色变化

    在网上搜索了很久 我也试了很多种情况 下面我为每种情况排布一下优先级 刚开始的时候我没有写播放器 使用的是腾讯的SDK 发现我之前设置的状态栏变化不在发生变化啦 所以在这里做一个小结 Xcode默认的颜色是黑色 记录优化代码的点滴 第一种

随机推荐

  • GZ-2022034 物联网技术应用赛项赛题(Windows系统运行维护)

    任务书1 使用过程发现局域网内网络设备无法获取到有效IP 请配置DHCP服务分配的IP从172 16 工位号 150开始至172 16 工位号 200结束 并启用服务 使用路由器配置DHCP 在工作站计算机中使用DOS窗口测试服务器计算机8
  • exure9 秘钥_AxureRP9.0秘钥(持续更新)

    Axure RP 9 0 0 3717 3719 正式版 Axure Enterprise Edition Licensee Freecrackdownload com KEY 5vYpJgQZ431X G5kp6jpOO8Vi3TySCB
  • 嵌入式系统之linux系统编程---16 守护进程

    1 什么是守护进程 守护进程 守护进程运行在后台 不跟任何控制终端关联 2 怎么创建一个守护进程 有两个基本要求 a 守护进程必须作为 init 进程的子进程 b 守护进程不跟控制终端交互 创建守护进程的步骤 1 使用 fork 函数创建一
  • 百度云的sugar大屏模板1

    1 企业实时销售数据1 2 企业实时销售数据2 3 电商618大数据 4 实时数据分析 5 某平台智能监控系统
  • Spring WebFlux编写响应式Controller接口

    文章目录 一 基本概念 1 什么是响应式编程 2 响应式流中的各个角色和关系 二 Reactor简介 1 Mono与Flux 三 Spring WebFlux 1 简介 2 构建响应式Controller 3 使用函数式编程模型编写API
  • docker--扩展学习-网络--命令--15

    docker 扩展学习 网络 命令 15 1 创建网络 1 1 简单创建容器 创建 docker network create net111 查看 docker network inspect net111 1 2 指定参数创建容器 创建
  • rabbitmq基础1——消息中间件概念、Rabbitmq的发展起源和基本组件的作用流程

    文章目录 一 消息中间件 1 1 概念 1 2 作用 1 2 1 消息队列持久化 1 2 2 消息队列分发策略 1 2 3 消息队列的高可用和高可靠 1 2 3 1 一主多从共享集群 1 2 3 2 一主多从同步集群 1 2 3 3 多主多
  • Go语言编程思想4——测试与性能调优

    Go语言编程思想4 测试与性能调优 Debugging Sucks Testing Rocks 多做测试 少做调试 Go语言使用表格驱动测试 一 传统测试 正确结果在前 函数结果在后 判断是否相等 测试逻辑和测试数据混在一起 出错信息不明确
  • .NET开发框架的选择历程

    去年来新公司后第一件事就是应领导要求 选择一款合适的开发框架 之前有熟悉的开发框架 Extjs NET简单三层 对于一般的企业后台管理系统够用了 但是现在Extjs这种前段端架基本被淘汰了 后端简单三层也显得非常落伍 但是对于选框架这个事情
  • zerotier使用教程_ZeroTier 初阶教程

    什么是 ZeroTier ZeroTier delivers the capabilities of VPNs SDN and SD WAN with a single system Manage all your connected re
  • stem函数--Matplotlib

    stem函数 Matplotlib 函数功能 Create a stem plot 创建棉棒图 A stem plot plots vertical lines at each x location from the baseline to
  • mysql常用命令有什么

    MySQL 数据库常用命令 1 MySQL常用命令 create database name 创建数据库 use databasename 选择数据库 drop database name 直接删除数据库 不提醒 show tables 显
  • 神经网络预测彩票数据

    一 人工智能深度学习神经网络在双色球彩票中的应用研究 一 https www cnblogs com zdz8207 p DeepLearning NeuralNetworks html 二 百度AI http ai baidu com p
  • js逆向-某399游戏登陆参数

    声明 本文仅供学习参考 禁止用于其他途径 违者后果自负 前言 目标网站 aHR0cHM6Ly93d3cuNDM5OS5jb20v 登陆接口 aHR0cHM6Ly9wdGxvZ2luLjQzOTkuY29tL3B0bG9naW4vbG9naW
  • 基于树莓派4B设计的智能家居系统(华为云IOT)

    基于树莓派的智能家居控制系统 华为云IOT 一 设计需求 前言 本次设计实现了一个基于树莓派的智能家居系统 可以对家庭环境进行实时监测和控制 提高居家安全性和舒适度 该系统采用了多种传感器和模块 包括温湿度传感器 烟雾传感器 火焰传感器 光
  • virtualenv: error: unrecognized arguments: --no-site-packages

    使用virtualenv version 看到自己的版本大于20 就可以将如下这段删除 export VIRTUALENVWRAPPER VIRTUALENV ARGS no site packages 我碰到的情况下 user makef
  • 机器学习算法之决策树

    原文 http www jianshu com p 6eecdeee5012 决策树是一种简单高效并且具有强解释性的模型 广泛应用于数据分析领域 其本质是一颗由多个判断节点组成的树 如 决策树 在使用模型进行预测时 根据输入参数依次在各个判
  • Go语言网络编程(socket编程)WebSocket编程

    1 WebSocket编程 1 1 1 webSocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 WebSocket使得客户端和服务器之间的数据交换变得更加简单 允许服务端主动向客户端推送数据 在WebSoc
  • 关于epoll的IO模型是同步异步的一次纠结过程

    这篇文章的结论就是epoll属于同步非阻塞模型 这个东西貌似目前还是有争议 在新的2 6内核之后 epoll应该属于异步io的范围了 golang的高并发特性就是底层封装了epoll模型的函数 但也有文章指出epoll属于 伪AIO 真正的
  • IOS之同步请求、异步请求、GET请求、POST请求

    1 同步请求可以从因特网请求数据 一旦发送同步请求 程序将停止用户交互 直至服务器返回数据完成 才可以进行下一步操作 2 异步请求不会阻塞主线程 而会建立一个新的线程来操作 用户发出异步请求后 依然可以对UI进行操作 程序可以继续运行 3