IOS ---两种网络请求的最佳实践

在使用URL 加载系统时,主要的两种方法可以执行HTTP请求和接收响应:

一、同步请求的最佳实践

  • 只在后台线程中使用同步请求,除非确定请求访问的是本地文件资源,否则请不要再主线程上使用;
  • 只有在知道返回的数据不会超出应用的内存时才使用同步请求。记住,整个响应体都会在位于代码的内存中。如果响应很大,那么可能导致应用出现内存溢出问题。此外,当代吗将响应解析为所需的格式时可能需要复制返回的数据,这会导致内存增加一倍;
  • 在处理返回的数据前,验证错误与调用返回的HTTP响应状态码;
  • 如果源URL需要验证,那么不要使用同步请求,因为同步框架并不支持对认证请求作出响应;
  • 如果需要向用户提供进度条,那么不要使用同步请求,因为请求是原子的,无法提供中间的进度指示信息;
  • 如果需要通过流解析器来渐进解析响应数据,那么不要使用同步请求;
  • 如果在请求完成前需要取消,那么不要使用同步请求。

二、异步请求的最佳实践

  • 对于大的上传或者下载来说,请使用异步请求以减少应用的内存占用量;
  • 在需要认证的情况下请使用异步请求;
  • 如果需要向用户提供进度反馈,那么请使用异步请求;
  • 在后台线程上使用异步请求时要小心,请提供一个运行循环;
  • 对于可以在后台线程的请求队列中轻松调度和完成的简单请求来说,这时使用异步请求有些过犹不及;
  • 如果使用输入流来上传数据,请实现connection:newBodyStream:方法以避免对输入流的复制
时间: 2024-10-27 11:05:39

IOS ---两种网络请求的最佳实践的相关文章

(转载)Android之三种网络请求解析数据(最佳案例)

[置顶] Android之三种网络请求解析数据(最佳案例) 2016-07-25 18:02 4725人阅读 评论(0) 收藏 举报  分类: Gson.Gson解析(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 小武:相信大家都用过网络请求解析数据,只是方法不一样而已,但是,逻辑都是差不多的: 一:AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个

微服务架构的两大解耦利器与最佳实践

这几年,微服务架构这个术语渐成热门词汇,但它不是一个全新架构,更不是一个包治百病的架构.那么,微服务架构究竟能够解决什么问题,又带来哪些痛点? 本文将与大家谈谈这个问题,以及微服务架构的两大解耦利器配置中心和消息总线的最佳实践. 微服务架构解决的问题与带来的痛点 一 互联网高可用架构为什么要服务化? 上图是互联网典型的高可用架构,大部分公司如果没有使用微服务,正在使用这样的架构: 用户端是浏览器 browser,APP 客户端 后端入口是高可用的 nginx 集群,用于做反向代理 中间核心是高可

iOS基础之网络请求相关

1.AFNetwork二次封装方法一: #import <Foundation/Foundation.h> @interface BeeNetworkManager : NSObject /** * POST网络请求 * 每个请求都添加公共参数 */ + (void)POSTWithUrlString:(NSString *)urlString parameters:(NSMutableDictionary *)parameters success:(void (^)(id responseO

GET和POST两种基本请求方法的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么. 当你在面试中被问到这个问题,你的内心充满了自信和喜悦. 你轻轻松松的给出了一个"标准答案": GET在浏览器回退时是无害的,而POST会再次提交请求. GET产生的URL地址可以被

【转发】GET和POST两种基本请求方法的区别

原文来源:https://www.cnblogs.com/logsharing/p/8448446.html GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么. 当你在面试中被问到这个问题,你的内心充满了自信和喜悦. 你轻轻松松的给出了一个“

Android中的几种网络请求方式详解

http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用中使用AsyncHttpClient来异步网络数据 http://blog.csdn.net/sdvch/article/details/13615605 Android中的几种网络请求方式详解,布布扣,bubuko.com

iOS开发入门——17条 Swift 最佳实践规范(下)

文章来源:http://www.zretc.com/technologyDetail/433.html 承接上文:iOS开发入门--17条 Swift 最佳实践规范(上) 9.单例(Singletons) 在Swift中单例是很简单的: class ControversyManager { static let sharedInstance = ControversyManager()} Swift 的 runtime 会保证单例的创建并且采用线程安全的方式访问. 单例通常只需要访问"share

ios中封装网络请求类

ios中封装网络请求类 #import "JSNetWork.h" //asiHttpRequest #import "ASIFormDataRequest.h" //xml 的解析 #import "UseXmlParser.h" //判断是否联网 #import "Reachability.h" //sbJson,判断json的解析 #import "JSON.h" @implementation JS

iOS学习笔记---网络请求

一.HTTP协议的概念 HTTP协议:Hyper Text Transfer Protocol(超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型(c/s) HTTP协议的特点 支持客户/服务器模式(c/s模式) 简单快速 灵活,HTTP允许任意类型的对象进行传输,正在传输的对象类型由Content-type加以标记 iOS学习笔记---网络请求