PHP模拟HTTP请求

1、HTTP协议

1.1、概念
  • HTTP协议,即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和万维网(WWW = World Wide Web)服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。
  • HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
1.2、HTTP协议特点
  • 1)客户/服务器模式:客户端(浏览器)/服务端
  • 2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 3)灵活:HTTP允许传输任意类型的数据对象(MIME类型)
  • 4)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
1.3、HTTP协议分类
  • 1)http请求协议:浏览器向服务器发起请求的时候需要遵循的协议
  • 2)http响应协议:服务器向浏览器发起响应的时候需要遵循的协议
1.4、HTTP请求
1)请求行
  1. 形式:请求方式 资源路径 协议版本号
  2. GET /index.php HTTP/1.1

最早的时候HTTP协议有过1.0,请求行独占一行(第一行)

2)请求头

请求头就是各项协议内容:具体的协议内容不会每次都使用全部

  1. Host:请求的主机地址(必须)
  2. Accept:当前请求能够接收服务器返回的类型(MIME类型)
  3. Accept-Language:接收的语言
  4. User-Agent:客户浏览器所在点的一些信息

请求头不固定数量,每个请求协议也是独占一行,最后会有一行空行(用来区分请求头和请求体)

3)请求体

请求数据:POST请求会有请求体。GET请求所有的数据都是跟在URL之后,会在请求行中的资源路径上体现。

基本格式:资源名字=资源值&资源名字=资源值…
在这里插入图片描述

1.5、HTTP响应
1)响应行
  1. 形式:协议版本号 状态码 状态消息(独占一行)
    HTTP/1.1 200 ok
  2. 200 ok: 成功
  3. 403 Forbidden: 没权限访问
  4. 404 Not Found: 未找到页面
  5. 500 Server Internal Error: 服务器内部错误
2)响应头

具体协议内容

  1. 时间:Wed, 16 Sep 2017 11:43:33 GMT
  2. 服务器:Server: Apache/2.2.22 (Win32) PHP/5.3.13
  3. 内容长度:Content-Length: 1571,数据具体的字节数(响应体)
  4. 内容类型:Content-Type: text/html:告诉浏览器对应的数据格式

列举了几个常见的响应头,并不是全部:响应头一个占一行,最后一行空行(区分响应头和响应体)

3)响应体

实际服务器响应给浏览器的内容

2、PHP模拟HTTP请求

2.1、建立连接:curl_init()

激活一个CURL连接功能
在这里插入图片描述

2.2、设置请求选项:curl_setOpt()

设定选项
在这里插入图片描述

  • CURLOPT_URL:连接对象
  • CURLOPT_RETURNTRANSFER:将服务器执行的结果(响应)以文件流的形式返回给请求界面(PHP脚本)
  • CURLOPT_POST:是否才有POST方式发起请求(默认请求是GET)
  • CURLOPT_POSTFIELDS:用来传递POST提交的数据,分为两种方式:字符串(name=abc&password=123)以及数组形式(array(‘name’=>’abc’,…))
  • CURLOPT_HEADER:是否得到响应的header信息(响应头),默认不获取
2.3、执行请求:curl_exec()

执行选项(与服务器发起请求),得到服务器返回的内容
在这里插入图片描述

2.4、关闭连接:curl_close():关闭资源
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值