详解Python HTTP 请求响应模型

  • Post category:Python

Python HTTP 请求响应模型是指Python中使用HTTP协议进行客户端与服务器之间数据传输的模型。其包含了请求和响应两个部分,在操作HTTP网络请求时我们往往需要同时涉及到这两个部分。

HTTP 请求

在Python中我们可以使用urllibrequests库发起HTTP请求。

urllib库发起HTTP请求

urllib库是Python自带的HTTP请求库,可以用来发起网络请求。

GET请求示例

使用urllib库进行GET请求时,我们可以使用urlopen函数发起请求,然后用read()方法读取响应信息。如下所示:

import urllib.request

response = urllib.request.urlopen('https://www.example.com')
html_content = response.read()
print(html_content.decode('utf-8'))

在上述代码中,我们向https://www.example.com发起了一个GET请求,并将响应的HTML内容打印出来。

POST请求示例

同样,我们可以使用urllib.request库来发起POST请求,只需要将请求方法改成POST,并且在请求的同时传送数据即可,如下所示:

import urllib.request
import urllib.parse

data = urllib.parse.urlencode({'name': 'Alice', 'age': 25}).encode('utf-8')
response = urllib.request.urlopen('https://www.example.com', data)
html_content = response.read()
print(html_content.decode('utf-8'))

在上述代码中,我们向https://www.example.com发起了一个POST请求,并且传送了nameage两个参数。

requests库发起HTTP请求

requests库是一个第三方Python库,用于发起HTTP请求,使用起来比urllib库更加方便,同时支持的功能也更多。

GET请求示例

使用requests库进行GET请求时,我们可以直接使用requests.get()方法发起请求,如下所示:

import requests

response = requests.get('https://www.example.com')
html_content = response.text
print(html_content)

在上述代码中,我们向https://www.example.com发起了一个GET请求,并将响应的HTML内容打印出来。

POST请求示例

同样,我们可以使用requests.post()方法来发起POST请求,只需要将请求方法改成POST,并且在请求的同时传送数据即可,如下所示:

import requests

data = {'name': 'Alice', 'age': 25}
response = requests.post('https://www.example.com', data=data)
html_content = response.text
print(html_content)

在上述代码中,我们向https://www.example.com发起了一个POST请求,并且传送了nameage两个参数。

HTTP 响应

在Python中进行HTTP请求时,我们不仅要关注请求的过程,也要对响应进行处理。

urllib库处理HTTP响应

urllib库的urlopen()方法返回的是一个HTTPResponse类型的对象,我们可以使用该对象来获取响应的状态码、HTTP头、响应体等信息。

response = urllib.request.urlopen('https://www.example.com')
print(response.status)
print(response.getheader('Content-Type'))
html_content = response.read()
print(html_content.decode('utf-8'))

在上述代码中,我们获取了响应的状态码、Content-Type头信息和HTML内容。

requests库处理HTTP响应

使用requests库发起HTTP请求后,requests.get()requests.post()方法返回的是一个Response对象,我们可以使用该对象来获取响应的状态码、HTTP头、响应体等信息。

response = requests.get('https://www.example.com')
print(response.status_code)
print(response.headers['Content-Type'])
print(response.text)

在上述代码中,我们获取了响应的状态码、Content-Type头信息和HTML内容。

以上就是Python HTTP请求响应模型的完整攻略。