【基础】处理HTTP响应数据
发布时间: 2024-06-26 03:05:04 阅读量: 56 订阅数: 106
Http请求处理流程
![【基础】处理HTTP响应数据](https://img-blog.csdnimg.cn/20210517001312892.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L21vbmV5d2VueHVl,size_16,color_FFFFFF,t_70)
# 1. HTTP响应数据基础**
HTTP响应数据是Web服务器对客户端请求的响应,它包含了各种信息,包括状态码、响应头和响应体。状态码表示请求的处理结果,响应头提供有关响应的元信息,而响应体则包含请求的实际数据。理解HTTP响应数据的基础对于处理和使用Web服务至关重要。
# 2. HTTP响应数据解析
### 2.1 解析响应头
#### 2.1.1 获取状态码和响应信息
HTTP响应头的第一行包含状态行,其中包含三个字段:
* **HTTP版本:**表示响应使用的HTTP协议版本,例如HTTP/1.1。
* **状态码:**表示请求处理的结果,例如200表示成功,404表示未找到。
* **响应信息:**提供有关状态码的简要描述,例如“OK”或“Not Found”。
```python
import requests
# 发送HTTP请求
response = requests.get("https://www.example.com")
# 获取状态码和响应信息
status_code = response.status_code
response_message = response.reason
# 打印状态码和响应信息
print(f"Status Code: {status_code}")
print(f"Response Message: {response_message}")
```
#### 2.1.2 解析响应头字段
响应头字段提供有关响应的附加信息,例如内容类型、内容长度和缓存控制。这些字段存储在`response.headers`字典中,键为字段名称,值为字段值。
```python
# 获取响应头字段
headers = response.headers
# 遍历响应头字段
for header, value in headers.items():
print(f"{header}: {value}")
```
### 2.2 解析响应体
#### 2.2.1 处理不同内容类型
响应体包含请求的实际数据,其内容类型由`Content-Type`响应头字段指定。常见的类型包括:
* `text/html`:HTML文档
* `application/json`:JSON数据
* `application/xml`:XML数据
```python
# 获取响应体内容类型
content_type = response.headers["Content-Type"]
# 根据内容类型处理响应体
if content_type == "text/html":
# 解析HTML文档
html_content = response.text
elif content_type == "application/json":
# 解析JSON数据
json_content = response.json()
elif content_type == "application/xml":
# 解析XML数据
xml_content = response.content
```
#### 2.2.2 解析JSON和XML数据
JSON和XML是两种常见的响应体数据格式。
**JSON解析:**
```python
# 解析JSON数据
json_data = response.json()
# 遍历JSON数据
for key, value in json_data.items():
print(f"{key}: {value}")
```
**XML解析:**
```python
# 解析XML数据
xml_data = response.content
# 使用XML解析器解析XML数据
parser = xml.etree.ElementTree.XMLParser(encoding="utf-8")
tree = xml.etree.ElementTree.parse(xml_data, parser=parser)
# 获取根元素
root = tree.getroot()
# 遍历根元素的子元素
for child in root:
```
0
0