You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python http.client从一次请求中获取并打印两个响应

如何使用http.client获取服务器返回的两个响应

你的代码核心问题是错误地将第二个请求的完整HTTP报文作为第一个GET请求的payload发送,这不符合HTTP规范,导致服务器处理异常,无法正确返回两个独立响应。要正确获取两个响应,需在同一个持久连接(HTTP/1.1默认支持)中分别发送两个独立请求,依次读取响应。

修正后的代码

import http.client

# 创建HTTP连接,HTTP/1.1默认启用keep-alive持久连接
conn = http.client.HTTPConnection("localhost")

# 发送第一个请求并读取响应
conn.request("GET", "/", headers={'Host': 'localhost', 'User-Agent': '-'})
res1 = conn.getresponse()
data1 = res1.read()
print("第一个响应内容:")
print(data1.decode("utf-8"))

# 发送第二个请求并读取响应
conn.request("GET", "/_hidden/index.html", headers={'Host': 'notlocalhost', 'User-Agent': '-'})
res2 = conn.getresponse()
data2 = res2.read()
print("\n第二个响应内容:")
print(data2.decode("utf-8"))

# 关闭连接
conn.close()

关键说明

  1. 避免手动拼接HTTP报文:http.client.request()方法会自动构造请求行、请求头,无需手动拼接完整的HTTP报文作为payload。你原代码中的payload会被当成第一个GET请求的请求体,而GET请求通常不携带请求体,这会导致服务器解析异常。
  2. 利用持久连接发送多请求:HTTP/1.1默认开启keep-alive,同一个连接可以连续发送多个请求,发送完第一个请求并读取完响应后,直接发送第二个请求即可。
  3. 依次读取响应:每个请求对应一个响应,发送请求后调用getresponse()获取当前请求的响应,读取完响应体后再处理下一个请求。

内容的提问来源于stack exchange,提问作者Vignesh SB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:17:29