iOS网络--网络HTTP

本文详细介绍了客户端如何通过URL找到服务器,并解析了HTTP协议的工作原理。包括HTTP请求与响应的过程,GET与POST请求的区别,以及iOS中常用的HTTP请求实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何找到服务器

  • 网络中部署着各种各样的服务器

  • 客户端是如何找到服务器的?

    • 客户端通过URL找到想要连接的服务器
  • URL(Uniform Resource Locator):统一资源定位符
    • 通过1个URL能找到互联网上唯一的一个资源
  • URL格式:

  • 协议代表了不同的资源查找方式,资源输入方式

    • 常见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  // 响应的时间 
    • 响应体:服务器返回的具体数据

  • 通讯简图
    这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值