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

基于BaseHTTPRequestHandler的POST请求返回JSON失败问题排查

问题解决:POST请求返回JSON内容失败

你的服务器代码存在关键错误,导致客户端无法正确接收JSON响应:

错误原因

在do_POST方法中,你重复调用了send_response方法,并且第二次传入了无效的状态码2:

self.send_response(200)
self.send_response(2)  # 这行是错误的

send_response会向客户端发送HTTP状态行,重复调用会导致响应头格式混乱,客户端无法正确解析后续的响应内容——即便状态码显示为200,实际响应结构已经被破坏。

修正后的代码

import json
from http.server import BaseHTTPRequestHandler, HTTPServer

class RequestHandler(BaseHTTPRequestHandler):

    def do_POST(self):
        content_length = int(self.headers["Content-Length"])
        post_data = self.rfile.read(content_length)
        json_data = json.loads(post_data)
        
        response_data = {
            "message": "Received POST request",
            "data": json_data
        }
        response_json = json.dumps(response_data).encode('utf-8')

        self.send_response(200)
        self.send_header("Content-type", "application/json")
        self.send_header("Content-Length", str(len(response_json)))  # 可选但推荐,明确响应长度
        self.end_headers()
        self.wfile.write(response_json)

def run_server():
    host = "localhost"
    port = 8000
    server = HTTPServer((host, port), RequestHandler)
    print(f"Server running on {host}:{port}")
    server.serve_forever()

if __name__ == "__main__":
    run_server()

验证修正效果

修改请求代码,打印响应内容确认:

import requests

response = requests.post('http://localhost:8000', json={'key': 'value'})
print(response.json())

此时会输出预期的JSON内容:

{"message": "Received POST request", "data": {"key": "value"}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:29:49