ios网络请求

HTTP原理 请求方法

两盒软妹~` 提交于 2020-01-30 19:20:13
HTTP的工作过程 一次HTTP操作称为一个事务,其工作过程分为四步: 1.客户机与服务器建立连接:客户单击某个超级链接,HTTP的工作开始,接下来进行TCP连接的三次握手过程。 2.建立连接后,客户几发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号、MIME信息(包括请求修饰符、客户机信息和可能的内容)。 3.服务器接到请求后,给予相应的响应信息,其格式为:一个状态行(包括信息的协议版本号)、一个成功或错误的代码、后面的是MIME信息(包括服务器信息、实体信息、可能的内容)。 4.客户端接收到服务器所返回的信息,通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。客户端收到服务器信息后,向服务器发送一个确认包,此包发送完毕,表示完成三次握手。 ——————————————————————————————————————— HTTP协议的主要特点: 1.支持客户/服务器模式-》过程 2.简单快速:客户向服务器请求服务时,只需发送请求方法(常用的有GET/POST/HEAD)和路径。每种请求方法规定了客户与服务器联系的类型不同,由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度快。 3.灵活:HTTP允许传输任意类型的数据对象,正在传输的类型用Content-Type加以标记。 4.无连接:限制每次连接只处理一个请求

HTTP和GET/POST请求(NSURLConnection)

耗尽温柔 提交于 2020-01-30 19:19:20
网络编程 网络编程是一种实时更新应用数据的常用手段 网络编程是开发优秀网络应用的前提和基础 网络基本概念 客户端(就是手机或者ipad等手持设备上面的APP) 服务器(远程服务器-本地服务器) 请求(客户端索要数据的方式) 响应(需要客户端解析数据) 数据库(服务器的数据从哪里来) HTTP URL 如何找到服务器(通过一个唯一的URL) URL介绍 统一资源定位符 url格式(协议\主机地址\路径) 协议:不同的协议,代表着不同的资源查找方式、资源传输方式 主机地址:存放资源的主机(服务器)的IP地址(域名) 路径:资源在主机(服务器)中的具体位置 请求协议 【file】访问的是本地计算机上的资源,格式是file://(不用加主机地址) 【ftp】访问的是共享主机的文件资源,格式是ftp:// 【mailto】访问的是电子邮件地址,格式是mailto: 【http】超文本传输协议,访问的是远程的网络资源,格式是http://(网络请求中最常用的协议) HTTP协议 简介 a.超文本传输协议 b.规定客户端和服务器之间的数据传输格式 c.让客户端和服务器能有效地进行数据沟通 优缺点 a.简单快速(协议简单,服务器端程序规模小,通信速度快) b.灵活(允许传输各种数据) c.非持续性连接(1.1之前版本是非持续的,即限制每次连接只处理一个请求,服务器对客户端的请求做出响应后

网络请求—HTTP协议

烂漫一生 提交于 2020-01-30 19:14:12
一、HTTP协议的作用 HTTP的全称是Hypertext Transfer Protocol,超文本传输协议 (1)规定客户端和服务器之间的数据传输格式 (2)让客户端和服务器能有效地进行数据沟通 二、HTTP通信过程 - 请求和响应 1.HTTP通信过程 - 请求 HTTP协议规定:1个完整的由客户端发给服务器的HTTP请求中包含以下内容 (1)请求行:包含了请求方法、请求资源路径、HTTP协议版本 (2)请求头:包含了对客户端的环境描述、客户端请求的主机地址等信息 (3)请求体:客户端发给服务器的具体数据,比如文件数据 2.HTTP通信过程 - 响应 客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端,HTTP协议规定:1个完整的HTTP响应中包含以下内容: (1)状态行:包含了HTTP协议版本、状态码、状态英文名称 (2)响应头:包含了对服务器的描述、对返回数据的描述(包括数据类型Content-Type、数据长度Content-Length、响应时间等) (3)实体内容:服务器返回给客户端的具体数据,比如文件数据 3.补充:推荐工具firebug-1.12.5-fx.xpi 虫子的作用:拦截所有的http请求。 4.常见的响应状态码 二、发送HTTP请求的方法 1、在HTTP/1.1协议中,定义了8种发送http请求的方法 GET、POST、OPTIONS

AFNetworking二次封装的那些事

ぐ巨炮叔叔 提交于 2020-01-30 10:00:00
AFNetworking可是iOS网络开发的神器,大大简便了操作.不过网络可是重中之重,不能只会用AFNetworking.我觉得网络开发首先要懂基本的理论,例如tcp/ip,http协议,之后要了解web的请求和响应,会使用苹果自带的NSURLSession,最后是把AFNetworking的源码啃掉. 前言 一直以来网络开发用的都是前面同事基于AFNetworking二次封装好的框架,一直都没什么问题,也就没往深处去了解.然后公司开始新项目了,iOS端由我负责,这可是我的第一次啊,从零开始,构建整个项目.这是个挑战,内心还是有点小激动的. 轮子肯定是不用重复造的,网络框架就拿的老项目的,结果出现了两个问题. 上传多张图片,服务端解析不了 无文件上传, Content-Type还是multipart/form-data 为了解决这个问题,从就没用过的NSURLSession到http协议,追本溯源,终于解决了. http协议 关于http协议的理论就不多讲了,主要就讲使用POST方法传递数据时,发送的请求头和请求体. Content-Type 我们提交的数据是什么编码方式服务端是不知道的,其实我们完全可以自定义格式,只要服务端取到数据后能解析就可以了. 一般服务端语言如 php、python 等,以及它们的 framework,都内置了自动解析常见数据格式的功能

iOS网络请求 添加全局代理 NSURLSessionConfiguration 解决方案

拥有回忆 提交于 2020-01-13 18:10:11
1、最近做项目、文件存储服务器是用的亚马逊的、如果直接访问、下载其资源速度很慢、所以需要在网络请求的时候添加一个代理、加速网络访问 2、代理服务器是一个HTTPS 的一个服务器 3、思路、解决方案、利用运行时机制(添加分类NSURLSession+Change)针对 NSURLSession 初始化添加代理对所有的网络请求进行拦截处理 #import "NSURLSession+Change.h" @implementation NSURLSession (Change) +(void)load{ Method oldMethod = class_getClassMethod(self, @selector(sessionWithConfiguration:delegate:delegateQueue:)); Method newMethod = class_getClassMethod(self, @selector(newSessionWithConfiguration:delegate:NSURLSessiondelegateQueue:)); Method oldMethod1 = class_getClassMethod(self, @selector(sessionWithConfiguration:)); Method newMethod1 = class

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

北城余情 提交于 2020-01-09 12:15:08
1、同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作, 2、异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行 3、GET请求,将参数直接写在访问路径上。操作简单,不过容易被外界看到,安全性不高,地址最多255字节; 4、POST请求,将参数放到body里面。POST请求操作相对复杂,需要将参数和地址分开,不过安全性高,参数放在body里面,不易被捕获。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

iOS 网络编程 GET 与 POST

我们两清 提交于 2019-12-24 01:24:39
// // ViewController.m // NetWork 1 // // Created by Lenny on 3/21/15. // Copyright (c) 2015 Lenny. All rights reserved. // #import "ViewController.h" #import "MBProgressHUD+MJ.h" @interface ViewController ()<</span>NSURLConnectionDataDelegate> @property (weak, nonatomic) IBOutlet UITextField *nameField; @property (weak, nonatomic) IBOutlet UITextField *pwdField; - (IBAction)loginBtnClick; @property(nonatomic,strong)NSMutableData * responseData; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (IBAction)loginBtnClick { NSString *username = self.nameField.text;

iOS 编程:NSURLSession

我的未来我决定 提交于 2019-12-16 10:31:44
定义:描述 Foundation 框架类在标准的网络传输协议下,用 URLs 连接因特网并与服务器交互的一整套体系。 支持的传输协议: File Transfer Protocol ( ftp:// ) Hypertext Transfer Protocol ( http:// ) Hypertext Transfer Protocol with encryption ( https:// ) Local file URLs ( file:/// ) Data URLs ( data:// ) 结构图 网络系统模块 5个模块:代理支持、身份验证和凭据、cookie 存储、配置管理和缓存管理。 Cookie,有时也用其复数形式 Cookies ,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。 NSURLSessionTask NSURLSessionDelegate 委托协议 Session 会话的概念 Session中任务的行为取决于三个方面: Session 的类型(取决于创建的配置对象类型); task 任务的类型; task 任务被创建时,app 是否处于前台状态? Session 的类型 默认会话(Default session) :与其他用于下载URL的 Foundation 方法类似。

iOS ASIHTTPRequest详解

江枫思渺然 提交于 2019-12-09 23:13:42
ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。 ASIHTTPRequest功能很强大,主要特色如下: l 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 l 下载的数据,可存储到内存中或直接存储到磁盘中 l 能上传本地文件到服务端 l 可以方便的访问和操作请求和返回的Http头信息 l 可以获取到上传或下载的进度信息,为应用程序提供更好的体验 l 支持上传或下载队列,并且可获取队列的进度信息 l 支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)中 l 支持Cookie l 当应用(iOS 4+)在后台运行时,请求可以继续运行 l 支持GZIP压缩数据 l 内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回已经缓存的数据结果 l ASIWebPageRequest –可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView /WebView中。任意大小的页面都可以无限期缓存

DRF--介绍和安装

∥☆過路亽.° 提交于 2019-12-06 06:43:23
前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不适用于前端App应用,为了对接App后端还需再开发一套接口。 前后端分离 在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果。至于前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App有App的处理方式,但无论哪种前端,所需的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。 在前后端分离的应用模式中,我们通常将后端开发的每一视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。API的风格有多种,但是现在比较主流且实用的就是本文要说的RESTful API。 RESTful RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 REST全称是Representational State Transfer,中文意思是 表征状态转移 。