📜  Python -HTTP响应

📅  最后修改于: 2020-11-06 06:27:21             🧑  作者: Mango


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

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

  • 状态线
  • 零个或多个标头(“常规” |“响应” |“实体”)字段,后跟CRLF
  • 空行(即CRLF之前没有任何内容的行)指示标头字段的结尾
  • 可选的消息正文
  • 以下各节说明了HTTP响应消息中使用的每个实体。

    消息状态行

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

Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

HTTP版本

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

HTTP-Version = HTTP/1.1

状态码

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

S.N. Code and Description
1 1xx: Informational

It means the request was received and the process is continuing.

2 2xx: Success

It means the action was successfully received, understood, and accepted.

3 3xx: Redirection

It means further action must be taken in order to complete the request.

4 4xx: Client Error

It means the request contains incorrect syntax or cannot be fulfilled.

5 5xx: Server Error

It means the server failed to fulfill an apparently valid request.

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

使用Python请求

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

import urllib3
http = urllib3.PoolManager()

resp = http.request('GET', 'http://tutorialspoint.com/robots.txt')
print resp.data

# get the status of the response
print resp.status

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

User-agent: *
Disallow: /tmp
Disallow: /logs
Disallow: /rate/*
Disallow: /cgi-bin/*
Disallow: /videotutorials/video_course_view.php?*
Disallow: /videotutorials/course_view.php?*
Disallow: /videos/*
Disallow: /*/*_question_bank/*
Disallow: //*/*/*/*/src/*

200