iOS网络篇2-http协议通信规则

超文本传送协议 (HTTP-Hypertext transfer protocol) 定义了客户端与服务器之间通信的传输规则。目前最新的版本是1.1,HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

一、特点:

1、支持客户/服务器模式。支持基本认证 和安全认证。

2、 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象。

5、无状态:HTTP协议是无状态的。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大 。

二、URL

URL的全称是Uniform Resource Locator (统一资源定位符),通过一个URL,能找到互联网唯一的一个资源。

URL的基本格式 = 协议://主机地址(域名)/路径

例如百度图片的URL为:http://image.baidu.com/channel/star

协议:不同的协议代表着不同的资源查找方式,除了本帖介绍的http协议外还有file(本地文件协议)ftp(共享主机文件协议)等

主机:存放资源的主机IP地址或者域名

路径:资源在主机中的具体位置

三、通信过程

请求:客户端向服务器请求资源

响应:服务器返回客户端响应资源

1.请求

1.1请求信息

●请求行: 包含了请求方法、请求资源路径、http协议版本

   例GET /images/logo.gif HTTP/1.1,表示get请求,从/images目录下请求logo.gif这个文件,协议版本是1.1。

●请求头: 包含了对客户端的相关描述

  Host://客户端想访问的服务器主机地址

  User-Agent://客户端的软件环境

  Accept://客户端所能接受的数据类型

  Accept-Language://客户端的语言环境

  Accept_Encoding://客户端支持的数据压缩格式

●请求体(可选的消息体)

  客户端向服务器发送的具体数据,在HTTP/1.1协议中,所有的请求方法中除post外,都是可选的。

1.2请求方法

HTTP/1.1协议中共定义了八种方法来表明请求资源的不同操作方式:

  OPTIONS - 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送‘*‘的请求来测试服务器的功能性。

  HEAD - 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

  GET - 向特定的资源发出请求。

  POST - 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

  PUT - 向指定资源位置上传其最新内容。

  DELETE - 请求服务器删除Request-URI所标识的资源。

  TRACE - 回显服务器收到的请求,主要用于测试或诊断。

  CONNECT - HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

  PATCH - 用来将局部修改应用于某一资源。

基本上只需了解GET、POST、HEAD请求就足以满足我们在iOS开发中所有需求,其他方法基本用不上也不可能让你实现,比如DELETE和PUT是对人家服务器进行数据操作,你肯定没有这个权限。

2.响应

2.1响应信息

●状态行: 客户端向服务器发送一个请求,服务器以一个状态行作为响应,包括http协议版本,状态码,状态英文名称

  HTTP/1.1 200 OK

//常见状态码有200 400 404 500等

  200 OK :请求已成功,请求所希望的响应头或数据体将随此响应返回。

  400 Bad Request:语义或参数有误,无法被服务器理解

  404 Not Found:请求失败,请求所希望得到的资源未被在服务器上发现。

  500 Internal Server Error:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。

●响应头: 包含了对服务器的描述、对响应数据的描述

  Server://服务器类型

  Content-Type :image/png //返回数据类型

  Content-Lenght:1024 //返回数据长度

  Date://返回日期

●响应体:服务器返回给客户端的具体内容。

时间: 2024-08-27 10:02:44

iOS网络篇2-http协议通信规则的相关文章

iOS网络编程开发—HTTP协议

iOS网络编程开发—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URL 2.URL中常见的协议 (1)HTTP 超文本传输协议,访问的是远程的网络资源,格式是http:// http协议是在网络开发中最常用的协议 (2)file 访问的是本地计算机上的资源

IOS网络篇1之截取本地URL请求(NSURLProtocol)

本文转载至 http://blog.csdn.net/u014011807/article/details/39894247 NSURLProtocol 是iOS中非常重要的一个部分,我们经常会在以下地方用到它: (1)网络请求代理转发(FQ 网络加速等) (2)离线缓存策略 总之,只要是需要对本地的URL请求进行截获的,我们都需要使用这个东东. IOS中我们经常使用的网络请求NSURLConnection以及WebView的页面加载都会被NSURLProtocol截获,因此这个部分的核心就是如

iOS网络篇1-简单搭建Apache服务器

不管是任何移动应用,为了保持生命力必须和网络进行数据反馈,为了便于开发,这里简单实现如何在mac上本地搭建用于开发测试的服务器. web服务器主要功能是提供网上信息浏览服务,服务器是一种被动程序,只有当客户端发出请求时才会作出响应, 最常用的Web服务器是Apache和Microsoft的Internet信息服务器IIS,其实说白了web服务器就是一台在Internet上具有独立IP地址的计算机,同时也指管理服务器的程序. 一.搭建目标: 1>搭建Apache服务器 2>支持PHP脚本语言 首

iOS网络篇4-利用NSURLConnection实现GET/POST/HEAD请求

iOS 开发中,我们可以利用NSURLConnection实现GET/POST请求 一.NSURLConnection三种请求方式 1.发送同步请求(返回NSData数据) [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 在当前线程执行,返回NSData数据 2.发送异步请求(利用block) [NSURLConnection sendAsynchronousReque

IOS网络篇

一.同步GET请求方法 -(void)synchronizationGet { NSString *strURL = @"http://olasapi.sinaapp.com//index.php"; NSURL *url = [NSURL URLWithString:strURL]; NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; NSData *data = [NSURLConnection sendS

iOS网络篇3-利用UIWebView做一个浏览器功能

在UIkit中,苹果封装了一个特别好用的控件UIWebView能够实现简单的网页加载和文件加载 一.加载网页资源 1.首先新建一个singleView项目,在storyboard拖如下控件 2.设置相关属性连接如下 3.在ViewController.m里的类扩展遵守UISearchBarDelegate和UIWebViewDelegate @interface ViewController () <UISearchBarDelegate,UIWebViewDelegate> /**网页展示*

iOS网络协议篇

iOS开发网络篇-HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) 通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位置,互联网上的每个资源都有一个唯一的URL 2.URL中常见的协议 (1)HTTP 超文本传输协议,访问的是远程的网络资源,格式是http:// http协议是在网络开发中最常用的协议 (2)file 访问的是本地计算机上的资源,

iOS网络缓存扫盲篇--使用两行代码就能完成80%的缓存需求

iOS网络缓存扫盲篇 --使用两行代码就能完成80%的缓存需求 下篇预告:使用80%的代码来完成剩下的20%的缓存需求 .敬请 star (右上角)持续关注. 目录 当我们在谈论缓存的时候,我们在谈论什么? GET网络请求缓存 80%的缓存需求:两行代码就可满足 控制缓存的有效性 文件缓存:借助ETag或Last-Modified判断文件缓存是否有效 Last-Modified ETag 总结 一般数据类型借助 Last-Modified 与 ETag 进行缓存 剩下20%的网络缓存需求--真的

iOS开发网络篇—NSURLConnection基本使用

iOS开发网络篇—NSURLConnection基本使用 一.NSURLConnection的常用类 (1)NSURL:请求地址 (2)NSURLRequest:封装一个请求,保存发给服务器的全部数据,包括一个NSURL对象,请求方法.请求头.请求体.... (3)NSMutableURLRequest:NSURLRequest的子类 (4)NSURLConnection:负责发送请求,建立客户端和服务器的连接.发送NSURLRequest的数据给服务器,并收集来自服务器的响应数据 二.NSUR