Python HTTP请求响应模型的完整攻略包括请求和响应两部分,在此给出详细的说明。
请求
在Python中,主要使用requests库来发送HTTP请求。这个库提供了很多方便的函数,可以让我们快速地发出GET、POST等请求。
发送GET请求
发送GET请求的方法是 requests.get()
。该方法接收一个URL参数,可以传递一些参数和头部信息。例如:
import requests
response = requests.get('https://www.baidu.com')
如果服务器能够正常响应,则返回的response对象将包含HTTP状态码、响应头部信息和响应正文。我们可以通过访问response对象的属性来获取这些信息,例如:
print(response.status_code) # 获取状态码
print(response.headers) # 获取响应头
print(response.text) # 获取响应正文(字符串)
print(response.content) # 获取响应正文(字节流)
发送POST请求
如果需要发送POST请求,则可以使用 requests.post()
方法。这个方法与get方法一样,只不过可以传递payload参数,用于传递需要提交的数据。例如:
import requests
data = {'username': 'admin', 'password': '123456'}
response = requests.post('http://www.example.com/login', data=data)
添加请求头
在使用requests库发送请求时,默认会添加一些头部信息,例如User-Agent等。为了更好地模拟浏览器行为,我们可以自己设置请求头。示例如下:
import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get('https://www.baidu.com', headers=headers)
响应
发送完请求后,服务器会返回一个HTTP响应。对于Python的requests库,响应内容被封装到response对象中。
响应状态码
响应状态码指示HTTP请求是否成功。一般来说,状态码以数字表示。常见的HTTP状态码有:
- 200 OK:请求成功
- 301 Moved Permanently:重定向到新的URL
- 401 Unauthorized:未授权访问
- 404 Not Found:请求的资源不存在
- 500 Internal Server Error:服务器内部错误
在requests库中,可以通过response.status_code
获取响应状态码。
响应头
响应头是包含在HTTP响应中的信息,用于描述服务器、请求结果等信息。在requests库中,可以通过response.headers
获取响应头信息。例如:
import requests
response = requests.get('https://www.baidu.com')
print(response.status_code)
print(response.headers)
响应正文
响应正文是包含在响应体中的信息。一般来说,响应正文可以是HTML网页、JSON数据、XML数据等形式。在requests库中,可以通过response.text
获取响应正文。如果需要获取字节流形式的正文,则可以使用response.content
方法。
示例
下面是一个使用requests库发送POST请求的示例。假设我们需要登录一个网站,提交的用户名和密码如下:
import requests
# 登录信息
data = {'username': 'admin', 'password': '123456'}
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
# 发送POST请求
response = requests.post('http://www.example.com/login', data=data, headers=headers)
# 获取响应状态码和响应正文
status_code = response.status_code
content = response.text
# 打印结果
print('状态码:', status_code)
print('响应正文:', content)
接下来是一个使用requests库发送GET请求的示例。假设我们需要下载一个文件,文件的URL如下:
import requests
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
# 发送GET请求
response = requests.get('http://www.example.com/sample.zip', headers=headers)
# 写入文件
with open('sample.zip', 'wb') as f:
f.write(response.content)
print('文件下载完成')
以上是Python HTTP请求响应模型的完整攻略,其中包括了示例及详细的说明。