Python HTTP响应

Python HTTP响应

http或超文本传输协议适用于客户端服务器模型。通常,Web浏览器是客户端,托管网站的计算机是服务器。在收到客户端的请求后,服务器会生成响应并将其以某种格式发送回客户端。

在接收并解释了请求消息后,服务器将以HTTP响应消息进行响应:

  • 状态行
  • 零个或多个标头(General | Response | Entity)字段,后跟CRLF
  • 空行(即CRLF之前没有任何内容的行)指示标题字段的末尾
  • 可选的消息正文

以下各节说明了HTTP响应消息中使用的每个实体。

1. 消息状态行

状态行由协议版本,后面的数字状态代码及其关联的文本短语组成。元素由空格SP字符分隔。

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.yapf.com
# Date : 2020-08-25
Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF
  
 

2. HTTP版本

支持HTTP版本1.1的服务器将返回以下版本信息:

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.yapf.com
# Date : 2020-08-25
HTTP-Version = HTTP/1.1
  
 

3. 状态码

Status-Code元素是一个三位数的整数,其中Status-Code的第一位定义响应的类别,最后两位不具有任何分类作用。第一位数字有5个值:

编号 状态码 描述
1 1xx 信息性:表示已收到请求,并且该过程正在继续。
2 2xx 成功:表示已成功接收,理解并接受了该动作。
3 3xx 重定向:表示必须采取进一步的措施才能完成请求。
4 4xx 客户端错误:请求包含不正确的语法或无法实现。
5 5xx 服务器端错误:服务器无法满足有效的请求。

HTTP状态代码是可扩展的,不需要HTTP应用程序来了解所有已注册状态代码的含义。

4. 使用Python请求

在下面的python程序中,使用urllib3模块发出http GET请求并接收包含数据的响应。它还提供了响应代码,该响应代码也由模块中的功能管理。PoolManager对象处理连接池的所有详细信息,还处理线程安全性。

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.yapf.com
# Date : 2020-08-25
import urllib3
 http = urllib3.PoolManager()
 resp = http.request('GET', 'http://yapf.com/robots.txt')
 print resp.data
 # get the status of the response
 print resp.status
  
 

当我们运行上面的程序时,得到类似以下输出 :

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.yapf.com
# Date : 2020-08-25
User-agent: *
 Disallow: /tmp
 Disallow: /logs
 Disallow: /rate/*
 Disallow: /cgi-bin/*
 Disallow: /video/video_course_view.php?*
 Disallow: /video/course_view.php?*
 Disallow: /videos/*
 Disallow: /*/*_question_bank/*
 Disallow: //*/*/*/*/src/*
 200
  
 

下一节:Python HTTP标头

Python 网络编程

相关文章