如何使用requests.models模块发送POST请求
发布时间:2024-01-14 21:56:16
requests.models模块是requests库的核心模块之一,用于发送HTTP请求。其中最常用的功能是发送POST请求。下面是一个使用requests.models发送POST请求的示例,包括了参数的设置、请求头的设置、cookies的设置、数据的传递以及返回结果的处理。
import requests
from requests.models import PreparedRequest
# 创建一个session对象
s = requests.session()
# 设置请求参数
url = 'http://httpbin.org/post'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36',
'Referer': 'http://httpbin.org/'
}
cookies = {
'name': 'value',
'name2': 'value2'
}
data = {
'key1': 'value1',
'key2': 'value2'
}
# 创建一个请求对象
req = PreparedRequest()
req.method = 'POST'
req.url = url
req.headers = headers
req.cookies = cookies
req.data = data
# 发送POST请求
response = s.send(req.prepare())
# 打印返回结果
print(response.text)
在上述代码中,首先创建了一个session对象,用于保持一些状态信息,比如cookies。然后设置了请求参数,包括请求的URL、请求头、cookies和数据。接着创建了一个请求对象,其中设置了请求的方法、URL、请求头、cookies和数据。最后,调用session对象的send方法发送请求,并将返回的结果存储在response对象中。
需要注意的是,使用requests.models发送POST请求时,需要手动构建请求对象,并将其传递给session对象的send方法。在请求对象中,可以设置请求的方法、URL、请求头、cookies和数据。
返回的response对象中包含了返回结果,可以通过response.text获取返回结果的文本内容。根据具体需要,可以使用response.json()获取返回结果的JSON格式内容,或者使用response.content获取返回结果的二进制内容。
另外,可以根据需要进一步处理返回结果,比如获取响应头、状态码、重定向信息等。具体的处理方法可以参考requests库的官方文档:https://requests.readthedocs.io/en/latest/
