Python 中进行 HTTP 请求最常用的库是 requests
。以下是 HTTP 请求的详细讲解和代码示例。
HTTP 请求类型:
- GET:从服务器检索数据。最常用的方法。
- POST:向服务器提交数据进行处理(例如表单提交),请求数据作为请求体发送。
- PUT:与 POST 类似,但通常用于更新资源。
- DELETE:删除服务器上的资源。
- HEAD:与 GET 类似,但只返回响应头,不返回响应体。
- PATCH:对资源进行部分更新。
HTTP 请求的其他要素:
- 请求头(Headers):提供关于请求的元数据。
- 请求体(Body):POST 和 PUT 请求中的数据。
- URL 参数:附加在 URL 上的键值对数据。
- 会话(Session):跨请求保持某些参数。
安装 Requests 库:
如果你还没有安装 requests
库,可以通过 pip 安装:
pip install requests
代码示例:
以下示例展示了如何使用 Python 的 requests
库来发送不同类型的 HTTP 请求。
import requests
# GET 请求
def send_get_request(url):
response = requests.get(url)
return response.text
# POST 请求
def send_post_request(url, data):
response = requests.post(url, data=data)
return response.text
# PUT 请求
def send_put_request(url, data):
response = requests.put(url, data=data)
return response.text
# DELETE 请求
def send_delete_request(url):
response = requests.delete(url)
return response.text
# 使用 GET 请求
url = 'http://example.com/api/data'
print('GET Response:', send_get_request(url))
# 使用 POST 请求
post_url = 'http://example.com/api/submit'
post_data = {
'key1': 'value1', 'key2': 'value2'}
print('POST Response:', send_post_request(post_url, post_data))
# 使用 PUT 请求
put_url = 'http://example.com/api/update'
put_data = {
'field': 'new_value'}
print('PUT Response:', send_put_request(put_url, put_data))
# 使用 DELETE 请求
delete_url = 'http://example.com/api/delete'
print('DELETE Response:', send_delete_request(delete_url))
一步请求的实现:
一步请求通常指的是发送一个请求并接收响应的过程。以下是使用 requests
库进行一步 GET 请求的示例:
# 一步 GET 请求
url = 'http://example.com/data'
response = requests.get(url)
# 检查状态码
if response.status_code == 200:
print('Request was successful.')
# 使用响应数据
data = response.text # 或 response.json() 如果响应是 JSON 格式
print(data)
else:
print('Failed to retrieve data:', response.status_code)
在这个示例中,我们发送了一个 GET 请求到 url
,然后检查响应的状态码。如果状态码是 200,表示请求成功,然后打印响应的文本内容。
"C:\Program Files\Python37\python.exe" D:/st_dev/ugot1213/test/01网络请求.py
GET Response: <!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
POST Response: <?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>404 - Not Found</title>
</head>
<body>
<h1>404 - Not Found</h1>
<script type="text/javascript" src="//obj.ac.bcon.ecdns.net/ec_tpm_bcon.js"></script>
</body>
</html>
PUT Response: <?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>404 - Not Found</title>
</head>
<body>
<h1>404 - Not Found</h1>
<script type="text/javascript" src="//obj.ac.bcon.ecdns.net/ec_tpm_bcon.js"></script>
</body>
</html>
DELETE Response:
Process finished with exit code 0