Python HTTP 请求响应模型是指Python中使用HTTP协议进行客户端与服务器之间数据传输的模型。其包含了请求和响应两个部分,在操作HTTP网络请求时我们往往需要同时涉及到这两个部分。
HTTP 请求
在Python中我们可以使用urllib
或requests
库发起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请求,并且传送了name
和age
两个参数。
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请求,并且传送了name
和age
两个参数。
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请求响应模型的完整攻略。