如何找到服务器
网络中部署着各种各样的服务器
客户端是如何找到服务器的?
- 客户端通过URL找到想要连接的服务器
- URL(Uniform Resource Locator):统一资源定位符
- 通过1个URL能找到互联网上唯一的一个资源
URL格式:
- URL= 协议://主机地址/路径
- 如:http://www.baidu.com/picture/abc.png
协议代表了不同的资源查找方式,资源输入方式
- 常见URL协议
- HTTP(超文本传输协议) http://
- file(访问本地计算机上的资源)file://(不用加主机地址)
- mailto 访问电子邮件地址 mailto:
- FTP(共享主机资源)ftp://
HTTP协议介绍
- 1.request请求
2.response响应
规定客户端和服务器之间的数据传输格式
让客户端和服务器能进行有效的数据沟通
特点:简单、快速、灵活、高效
- HTTP0.9和HTTP1.0使用非持续性连接,即每次连接只处理一个请求,服务器对客户端的请求做出响应后,马上断开,这样的方式节省了传输的时间。
发送HTTP请求的方法
- 在HTTP/1.1协议中,定义了8种发送http请求的方法(GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE 、CONNECT、PATCH)
目前最常用的是get请求和post请求
- get请求一般用来获取数据
- post一般用来对数据进行修改
参数:传递给服务器的具体数据,比如登陆的用户名,密码等
get和post 的主要区别在数据传输上
GET:在URL的问号(?)后面加上请求参数。多个参数用&隔开。浏览器和服务器对URL的长度有限制,通常不超过1KB示例:http://www.baidu.com/login?username = 123&password= 234&type = JSON
- POST:发送给服务器的参数全部封装在请求体中,理论上POST的数据量是没有限制的
GET和POST的选择
如果要传递大量数据,比如文件上传,只能用POST请求
GET的安全性比POST要差些,如果包含机密\敏感信息,使用POST
如果仅仅是索取数据(数据查询),使用GET
如果是增加、修改、删除数据,使用POST
iOS中发送的HTTP请求的方案
苹果原生(自带)
NSURLConnection:用法简单,最古老最经典最直接的一种方案【坑比较多】
NSURLSession:功能比NSURLConnection更加强大,苹果目前比较推荐使用这种技术【2013推出,iOS7开始出的技术】
- CFNetwork:NSURL*的底层,纯C语言
第三方框架
ASIHttpRequest:外号“HTTP终结者”,功能极其强大,可惜早已停止更新
AFNetworking:简单易用,提供了基本够用的常用功能,维护和使用者多
MKNetworkKit:简单易用,产自三哥的故乡印度,维护和使用者少
<注意>为了提高开发效率,企业开发基本用第三方框架。AFNetworking最常用
HTTP通讯过程
HTTP协议规定:一个完整的由客户端发给服务器的HTTP请求包含下面内容
请求头:包含了对服务器的描述、对返回数据的描述
GET /abc.png HTTP/1.1 // 包含了请求方法、请求资源路径、HTTP协议版本 Host: 121.22.222.186:32812 // 客户端想访问的服务器主机地址 User-Agent: Mozilla/5.0 // 客户端的类型,客户端的软件环境 Accept: text/html, */* // 客户端所能接收的数据类型 Accept-Language: zh-cn // 客户端的语言环境 Accept-Encoding: gzip // 客户端支持的数据压缩格式
请求体:客户端发给服务器的具体数据
客户端发送请求给服务器后,服务器应该做出响应,即返回数据给客户端。http协议规定:1个完整的HTTP响应包含下面内容
响应头:包含了对服务器的描述、对返回数据的描述
HTTP/1.1 200 OK // 包含了HTTP协议版本、状态码、状态英文名称 Server: Apache-Coyote/1.1 // 服务器的类型 Content-Type: image/jpeg // 返回数据的类型 Content-Length: 56811 // 返回数据的长度 Date: Mon, 23 Jun 2014 12:54:52 GMT // 响应的时间
响应体:服务器返回的具体数据
- 通讯简图