iOS中的网络编程基础(一)

匿名 (未验证) 提交于 2019-12-03 00:30:01

客户端:移动应用(iOS、android等)
服务器:为客户端提供服务、提供数据、提供资源的机器
请求:客户端向服务器索取数据的一种行为
响应:服务器对客户端的请求做出的反应,一般指返回数据给客户端

URL(Uniform Resource Locator)

  • 通过一个URL,能找到互联网唯一的一个资源
  • URL就是资源地址、位置,互联网上每一个资源都有唯一的URL
  • 格式:
    协议://主机地址/路径(eg:http:www.baidu.com/img/login.png)

    • 协议:不同的协议,代表着不同的资源查找方式、资源传输方式
    • 主机地址:存放资源的主机(服务器)的IP地址(域名)
    • 路径:资源在主机(服务器)中的具体位置
  • URL中常见的协议

    • HTTP:超文本传输协议,访问的是远程网络资源,http://
    • file:访问的是本地计算机上的资源,file://
    • mailto:访问的是电子邮件地址,mailto:
    • FTP:访问的是共享主机的文件资源,ftp://
  • 作用:
    • HTTP协议规定了客户端和服务器之间的数据传输格式
    • 让客户端和服务器能有效的进行数据沟通
  • 特点:
    • 简单快速:因为HTTP协议简单,所以HTTP服务器的程序规模小,因为通信速度快
    • 灵活:HTTP允许传输各种各样的数据
  • HTTP基本通信过程
    • 请求:客户端向服务器发起请求
    • 响应:服务器返回客户端相应数据
  • 发送HTTP请求的方法
    • get(常用)、post(常用)、opions、head、put、delete、trace、connect、patch
    • get
      • 在请求URL后面以?的形式跟上发送给服务器的参数,多个参数之间用&隔开,比如(http://www.test.com/login?username=123&psd=123&type=JSON
      • 由于浏览器和服务器对URL的限制,因此在URL后面附带上的参数是有限的,通常不能超过1KB
    • post
      - 发给服务器的参数全部放在请求体中
      - 理论上,POST传递的数据没有限制
  • get和post的选择

    • 如果传递大量数据,比如文件上传,只能用post请求
    • get的安全性比post要差些,如果包含机密信息,建议用post
    • 如果仅仅索取数据(数据查询),建议使用get
    • 如果是增加、修改、删除数据,建议是用post
  • 发送HTTP请求的方案

    • NSURLConnection:用法简单,(坑比较多)
    • NSURLSession:功能比NSURLConnection强大,苹果目前比较推荐
    • CFNetwork :苹果底层,纯C语言
    • ASIHTTPRequest:功能强大,已停止更新
    • AFNetworking:简单易用,三方库中比较主流
  • HTTP通信过程 - 请求
    HTTP协议规定:一个完整的由客户端发送给服务器的HTTP请求中包含以下内容

    • 请求头:包含了对客户端的环境描述、客户端请求信息等
    • 请求体:客户端发送给服务器的具体数据,比如文件数据(POST请求才会有)
 请求头内容:  GET(POST) /mini.png HTTP/1.1  包含了请求方法、请求资源路径、HTTP协议版本  Host:120.25.226.186:32812     客户端想访问的服务器主机地址  User-Agent:Mozilla/5.0        客户端的类型,客户端的软件环境  Accept:text/html              客户端所能接收的数据类型  Accept-Language:zh-cn        客户端的语言环境  Accept-Encoding:gzip         客户端支持的数据压缩格式 
  • HTTP通信过程 - 响应
    客户端向服务器发送请求,服务器应当做出响应,即返回数据给客户端
    HTTP协议规定:一个完整的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 响应的时间
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!